7

私は自動化に関してまだかなり新しいので、これはばかげた質問のように聞こえるかもしれません。質問を投稿する前に、Google検索を徹底的に行いました:)

ともあれ、ここで問題です

Android デバイスでテストを自動化しています。テストの 1 つは、項目が「お気に入り」としてマークされていることを確認することです。ページのコード スニペットは次のとおりです。

<li class = "resultItem isFavorite" data-index="2">
<div class="name" data-cis="4ced6feb-3b5c-415a-ae1c-0b8bca8e3c85" onclick="return true">f,f</div>
</li>

でリスト内の要素を見つけることができますel = @driver.find_element(:xpath, "//*[class='name' and text() ='f,f']")。el.class が resultItem isFavorite を表示してくれることを期待していました。代わりに私が得るのは: Selenium:WebDriver::Element

項目がお気に入りとしてマークされていない場合、isFavorite フラグはフィールドに追加されません。isFavorite を使用してアイテムがお気に入りとしてマークされていることを確認したいと思っていましたが、それを変数に入れることができないようです。

どんな助けでも大歓迎です。

ありがとう、

ジェフ

4

4 に答える 4

12

ここで本当に欲しいのは、次のようなものです。

# Note: Possibly incorrect Ruby code here. 
# Written from memory.
el = @driver.find_element(:xpath, "/your/xpath/here")
# Could also your el["class"]
element_class_attribute = el.attribute("class")

通常、src(のようにel.src) のようなほとんどの属性名を使用すると、実行時エラーが発生します。しかし、classRuby では が特別な意味を持つことがあり、すべてのオブジェクトにはclassRuby クラスという属性があります。

于 2013-01-12T18:53:49.403 に答える
0

別の方法でこれを解決できました:

element = @driver.find_elements(:class, "isFavorite")
element.each do |t|
   if t.text() == 'f,f' then
       result = "pass"
   end
end

長いリストがある場合、これは本当に遅いかもしれないと感じています...しかし、少なくとも動作します:)

ありがとう

ジェフ

于 2013-01-14T19:49:55.400 に答える