Akash Panchal
Akash Panchal

Reputation: 305

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.

Upvotes: 0

Views: 1194

Answers (2)

Omkar
Omkar

Reputation: 182

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

Upvotes: 0

ssmiech
ssmiech

Reputation: 261

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

Upvotes: 1

Related Questions