如何查找和点击:使用Selenium Ruby的javascript链接?

时间:2012-04-26 03:51:02

标签: javascript ruby selenium hyperlink

我想点击所有:我使用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链接吗? 我在这里遇到的问题是,如果它成功点击一个链接并打开它,它会在下一个时崩溃。 如何保持这种状态,直到点击页面中的所有链接为止。

2 个答案:

答案 0 :(得分:1)

我发现脚本存在两个问题:

  1. 您正在尝试使用Element类的私有方法。要打开链接,您需要所有element.click,而不是element.open: 这应该工作

    driver.find_elements(:tag_name,“a”)[0] .click

  2. 不要遍历页面上的链接,尝试单击它们,而不确保在下次单击之前返回初始页面。否则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")
}