2014-01-15 104 views
1

我在我的Selenium中遇到以下问题。它会生成错误,该元素不再附加到DOM。我发现有些解决方案需要等待,但我无法弄清楚是否可以等待没有ID的元素。如果我只有className,我可以等待一个元素吗?元素不再连接到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代码片段和堆栈跟踪。

这里是如何在Ruby中使用WebDriverWait:

# 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