2016-04-06 1 views
0

Capyabara/Seleniumでリンクをクリックしようとしています。Capybara/Selenium - 分離されたリンクをクリックする方法はありますか?ユニークな識別子やコンテンツはありませんか?

これはBingマップのピンリンクexample can be found hereです。

私はall(…).eachと161個のリンクを反復処理することができます

Capybara::ElementNotFound: 
Unable to find link 
#<Capybara::Node::Element tag="a" 
path="/html/body/form/article/div/div/section/div[2]/div/div[2]/div/div[2]/div[2]/div[3]/div/a[1]"> 

これらのリンクの一意の識別子もコンテンツも持たない(画像タグ:

within(".map") do 
    all("a.dealer-pin").each do |link| 
    click_link(link) 
    end 
end 

しかしclick_link(link)でエラーが発生します)が一意であるか、一意の識別子を持ちます。

答えて

0

エラーがヒントしているように、各DOM要素は、標準的なCSSセレクタと似ていますが、より具体的なXPathによって参照できます。特定のノードを右クリックすると、Chromeインスペクタ内のパスを指定できます。

あまりにも具体的なものをテストするように注意してください。それは壊れやすく、しばしば維持しがたいテストを作ることになるだろう。

関連カピバラドキュメント:http://www.rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders

+0

私は 'A'タグのXPathをコピーして、それらを発見しました。その中の 'img'については、' // * [@ id = "null"]/img'となります。 – Sebabouche

0

すでにリンク要素を持っているので、あなたはそれにclickを呼び出す必要があります - click_linkが自分のID、タイトルのリンクを見つけ、またはテキストコンテンツ(また、ネストされたIMGのALT属性) `// * [ID = "ヌル" @]`: - しかし、あなたはすでに通常のCSSのクエリ

within(".map") do 
    all("a.dealer-pin").each do |link| 
    link.click 
    end 
end 
関連する問題