Capybara / Selenium - 有没有办法点击一个孤立但没有唯一标识符或内容的链接?

时间:2016-04-06 16:18:45

标签: ruby selenium capybara

我正在尝试点击 Capyabara / Selenium 的链接。

它是Bing地图上的固定链接,example can be found here

我可以使用all(…).each

遍历161个链接
within(".map") do
  all("a.dealer-pin").each do |link|
    click_link(link)
  end
end

但是click_link(link)会抛出错误:

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]">

这些链接既没有唯一标识符,也没有唯一标识符或具有唯一标识符的内容(图片标记)。

2 个答案:

答案 0 :(得分:0)

就像错误提示一样,每个DOM元素都可以通过其XPath引用,它与标准CSS选择器类似,但更具体。右键单击特定节点,即可在Chrome检查器中显示路径。

小心测试一些过于具体的东西。它可能会变得脆弱而且经常会进行难以维持的测试。

相关的水豚文档:http://www.rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders

答案 1 :(得分:0)

由于您已经拥有了link元素,因此只需要在其上调用click - click_link按照ID,标题或文本内容(也是嵌套img的alt属性)查找链接 - 但是你已经用普通的css查询找到了它们

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