2014-01-15 2 views
1

Ruby에서 Selenium에 다음과 같은 문제가 있습니다. 요소가 더 이상 DOM에 연결되지 않는다는 오류를 생성합니다. 기다려야 할 몇 가지 해결책을 찾았지만 ID가없는 요소를 기다릴 수 있는지 알 수 없었습니다. 클래스 이름 만 있으면 요소를 기다릴 수 있습니까?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 스 니펫과 스택 추적을 게시 할 수 있습니다. 여기

루비에 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 
관련 문제