Reputation: 305
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
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
Reputation: 261
I see two problems with the script:
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
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