2012-04-26 117 views
0

我想单击所有:我使用Selenium Ruby在Firefox中加载的页面上的JavaScript链接。如何找到并点击:使用Selenium Ruby的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 

工作可以:JavaScript链接可以使用find_element方法被点击? 我在这里面临的问题是,如果它成功点击一个链接并打开它,它会在下一次崩溃时崩溃。 如何保持这种状态直到页面中的所有链接被点击。

+0

你可以提供你的意思是由“什么的例子: JavaScript链接'? – dfreeman 2012-04-26 04:22:14

+0

这些链接是否导航到另一页?或者他们运行JavaScript? – Ian 2012-04-26 04:41:44

+0

它应该是这样的'Universal '或脚本标签's_265.linkInternalFilters =“javascript:,engadget.com”; ' – 2012-04-26 06:52:01

回答

1

我看到两个问题的脚本:

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

    driver.find_elements(:TAG_NAME “一”)[0]。点击

  2. 不要遍历页面上的链接尝试单击它们,但不保证在下次单击之前返回到初始页面。否则,硒失去语境,并给你以下信息:

    硒:: webdriver的::错误:: StaleElementReferenceError

0

Try below code.I am not that much familiar to Ruby,Still below code may be helpful for you

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") 
} 
相关问题