<g>
タグを持つページ内のいくつかのグラフィック アイテムを処理する必要があります。Selenium Webdriverにドロップすることで、次のようにしてそれらを見つけることができます。
browser.wd.find_elements( :tag_name => "g" )
watir webdriverに相当するものは何ですか?
また、これらのセレン要素をどのようにwatir要素に変換しますか?
<g>
どうにかローカルで watirにタグのサポートを追加できますか?
<g>
タグを持つページ内のいくつかのグラフィック アイテムを処理する必要があります。Selenium Webdriverにドロップすることで、次のようにしてそれらを見つけることができます。
browser.wd.find_elements( :tag_name => "g" )
watir webdriverに相当するものは何ですか?
また、これらのセレン要素をどのようにwatir要素に変換しますか?
<g>
どうにかローカルで watirにタグのサポートを追加できますか?
解決策 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
watir または watir-webdriver では、非標準の HTML タグはサポートされていません。その理由の 1 つは、サポートする必要がある可能性のあるタグ名のリストが無限にあるためです。
必要に応じて、独自のカスタム タグにモンキー パッチを適用できます。長期的には、これらのカスタム タグを頻繁に処理する必要がある場合は、Watir API でサポートされている他の標準 HTML 要素と同じように機能するものを用意するという点で、それが最善の解決策になる可能性があります。
タグ名に CSS セレクターを使用できますが、 Watir::Exception::MissingWayOfFindingObjectException: 無効な属性: :cssで説明されているように、要素オブジェクトに固執する場合にのみ機能します。あなたが私に尋ねると、それは物事を少し読みにくくしたり、有用にしたりしますが、その点でわずかなコストに見合う迅速で簡単な解決策かもしれません.
または、watir でサポートされていない機能が必要な場合は、.driver
または.wd
メソッドを使用して webdriver 機能にアクセスできます。(しかし、それはそれほど読みにくいものでもあります)