简体   繁体   中英

How to find and click :javascript links using Selenium Ruby?

I want to click on all :javascript links on page that I am loading in Firefox using Selenium Ruby.

What could be the correct method for doing this? I did for simple links like this:

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}

Though its not working properly due to some error

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

Can :javascript links can be clicked using find_element method? The problem I am facing here is that if it clicks one link successfully and open it , it crashes while going for next. How to keep this continue till all links in page gets clicked.

I see two problems with the script:

  1. You are trying to use private method of Element class. To open link you need to all element.click, not element.open: This should work

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

  2. Don't iterate through the links on the page an try to click them without assuring that you get back to initial page before the next click. Otherwise Selenium loses context and will give you following message:

    Selenium::WebDriver::Error::StaleElementReferenceError

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")
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM