我正试图单击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