如何使用SeleniumRuby查找并单击:javascript链接?

如何使用SeleniumRuby查找并单击:javascript链接?,javascript,ruby,selenium,hyperlink,Javascript,Ruby,Selenium,Hyperlink,我想点击我正在使用SeleniumRuby在Firefox中加载的页面上的all:javascript链接 这样做的正确方法是什么? 我做了以下简单链接: require 'rubygems' require 'selenium-webdriver' driver = Selenium::WebDriver.for :firefox driver.get " http://www.testfire.net " driver.find_elements(:tag_name, "a").each

我想点击我正在使用SeleniumRuby在Firefox中加载的页面上的all: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
Selenium Test.rb:6:为#调用私有方法“open”(nomethoderor)
来自硒测试。rb:6:in‘each’
来自硒测试。rb:6
Can:可以使用find_元素方法单击javascript链接吗? 我在这里面临的问题是,如果它成功单击一个链接并打开它,那么它在进行下一个链接时就会崩溃。
如何在点击页面中的所有链接之前继续此操作。

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

  • 您正在尝试使用元素类的私有方法。要打开链接,需要指向所有元素。单击,而不是元素。打开: 这应该行得通

    驱动程序。查找元素(:标记名称,“a”)[0]。单击

  • 不要反复浏览页面上的链接,尝试单击它们,而不确保在下次单击之前返回到初始页面。否则,Selenium将丢失上下文并向您发送以下消息:

    Selenium::WebDriver::Error::StaleElementReferenceError

  • 试试下面的代码。我对Ruby不太熟悉,仍然在代码下面 可能对你有帮助


    你能提供一个例子说明你所说的“:javascript链接”是什么意思吗?这些链接是否导航到另一个页面?或者他们运行javascript?应该是这样的
    ,或者在脚本标记之间
    s_265.linkInternalFilters=“javascript:,engadget.com”
    
    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")
    }