5

<g>タグを持つページ内のいくつかのグラフィック アイテムを処理する必要があります。Selenium Webdriverにドロップすることで、次のようにしてそれらを見つけることができます。

browser.wd.find_elements( :tag_name => "g" )

watir webdriverに相当するものは何ですか?

また、これらのセレン要素をどのようにwatir要素に変換しますか?

<g>どうにかローカルで watirにタグのサポートを追加できますか?

4

2 に答える 2

6

解決策 1 - Watir-Webdriver と同等:

selenium-webdriver で行っていたことに相当するものは次のとおりです。

browser.elements( :tag_name => "g" )

したがって、次のようにして、各要素のテキストを出力できます。

browser.elements( :tag_name => "g" ).each do |x|
  puts g.text
end

解決策 2 - G 要素のサポートを追加する:

watir-webdriver を要求した後、次のコードを追加します。

module Watir
    module Container
        def g(*args)
            G.new(self, extract_selector(args).merge(:tag_name => "g"))
        end

        def gs(*args)
            GCollection.new(self, extract_selector(args).merge(:tag_name => "g"))
        end         
    end

    class G < Element
    end

    class GCollection < ElementCollection
        def element_class
            G
        end
    end
end

次に、「g」を他の要素と同様に扱うことができます。例えば:

puts browser.g(:index, 0).text
browser.gs.each{ |x| puts x.text }

G および GCollection クラスは、すべての標準要素メソッドをサポートします。その要素に固有のものがある場合は、クラスにメソッドを追加できます。

更新 - カスタム メソッドの追加の例:

カーソル スタイルを取得するには、次のように G クラスにメソッドを追加します。

class G < Element
    def cursor_style()
        assert_exists
        return @element.style("cursor")
    end
end

これにより、次のようにカーソル プロパティを取得できます。

puts browser.g(:index, 0).cursor_style
#=> move

要素と対話するすべてのカスタム メソッドは、assert_exists で開始する必要があります。次に、メソッド内で @element 変数を使用して要素を操作できます。

G 要素は Element クラスから継承されるため、組み込みのスタイル メソッドを使用することもできます。

puts browser.g(:index, 0).style("cursor")
#=> move
于 2012-05-23T14:31:24.657 に答える
1

watir または watir-webdriver では、非標準の HTML タグはサポートされていません。その理由の 1 つは、サポートする必要がある可能性のあるタグ名のリストが無限にあるためです。

必要に応じて、独自のカスタム タグにモンキー パッチを適用できます。長期的には、これらのカスタム タグを頻繁に処理する必要がある場合は、Watir API でサポートされている他の標準 HTML 要素と同じように機能するものを用意するという点で、それが最善の解決策になる可能性があります。

タグ名に CSS セレクターを使用できますが、 Watir::Exception::MissingWayOfFindingObjectException: 無効な属性: :cssで説明されているように、要素オブジェクトに固執する場合にのみ機能します。あなたが私に尋ねると、それは物事を少し読みにくくしたり、有用にしたりしますが、その点でわずかなコストに見合う迅速で簡単な解決策かもしれません.

または、watir でサポートされていない機能が必要な場合は、.driverまたは.wdメソッドを使用して webdriver 機能にアクセスできます。(しかし、それはそれほど読みにくいものでもあります)

于 2012-05-23T06:32:01.437 に答える