2014-01-15 4 views
1

У меня есть следующая проблема с моим Selenium in Ruby. Он генерирует ошибку, что элемент больше не привязан к DOM. Я нашел некоторые решения для ожидания, но я не мог понять, могу ли я ждать элемента, у которого нет идентификатора. Могу ли я ждать элемента, если у меня есть только имя класса?Элемент больше не прикреплен к селу DOM

require 'selenium-webdriver' 
#require Firefox installation !! 

browser = Selenium::WebDriver.for :firefox 
browser.get <URL> 

wait = Selenium::WebDriver::Wait.new(:timeout => 20) 

js_code = "return document.getElementsByClassName('Cell ')" 

rawdata = Array.new 
puts rawdata.size 

elements = browser.execute_script(js_code) 
elements.each{|e| rawdata.push(e.text) } 

puts rawdata.size 
arrSize = rawdata.length 


puts rawdata.at(5) + " " + rawdata.at(4) + " " + rawdata.at(9) + " " + rawdata.at(6) 

ответ

1

Это отвечает на ваш вопрос, но не обязательно устраняет исключение. Если это не так, вы можете опубликовать фрагменты HTML и stacktrace.

Вот как использовать WebDriverWait в Ruby:

# create wait like you have already done 
wait = Selenium::WebDriver::Wait.new(:timeout => 20) 

# wait until something, you can use any locators you want, not just ids 
# don't inject JavaScript directly, unless you have to 
wait.until { driver.find_element(:class => "dojoxGridCell") } 

# do stuff to your raw data