我想点击所有:我使用Selenium Ruby在Firefox中加载的页面上的javascript链接。
这样做的正确方法是什么? 我做了这样的简单链接:
require 'rubygems'
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.get " http://www.testfire.net "
driver.find_elements(:tag_name, "a").each {|link| link.open}
虽然由于某些错误而无法正常工作
Selenium Test.rb:6: private method `open' called for #<Selenium::WebDriver::Element:0x4c155f0> (NoMethodError)
from Selenium Test.rb:6:in `each'
from Selenium Test.rb:6
可以:使用find_element方法点击javascript链接吗? 我在这里遇到的问题是,如果它成功点击一个链接并打开它,它会在下一个时崩溃。 如何保持这种状态,直到点击页面中的所有链接为止。
答案 0 :(得分:1)
我发现脚本存在两个问题:
您正在尝试使用Element类的私有方法。要打开链接,您需要所有element.click,而不是element.open: 这应该工作
driver.find_elements(:tag_name,“a”)[0] .click
不要遍历页面上的链接,尝试单击它们,而不确保在下次单击之前返回初始页面。否则Selenium会失去上下文,并会给你以下消息:
硒::的webdriver ::错误:: StaleElementReferenceError
答案 1 :(得分:0)
尝试以下代码。我对Ruby并不熟悉,仍然在代码之下 可能对你有所帮助
link = driver.find_elements(:tag_name, "a")
i = 0
link.times do
{
link[i].click
driver.navigate.back
i=i+1
link = driver.find_elements(:tag_name, "a")
}