水豚/硒-有没有办法点击一个被隔离但没有唯一标识符或内容的链接



我正试图单击Capyabara/Selenium的链接。

这是Bing地图上的一个pin链接,示例可以在这里找到。

我可以使用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]">

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

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

要小心测试一些过于具体的东西。它很可能会很脆弱,经常会断裂,很难维持测试。

相关水豚医生:http://www.rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders

由于您已经有了链接元素,您只需在其上调用click-click_link通过它们的id、标题或文本内容(也是嵌套img的alt属性)来查找链接-但您已经使用普通css查询找到了它们

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

最新更新