아마도 이것을 소개하는 가장 중요한 것은 제가 c9를 사용하고 있다는 것입니다. 클라우드의 IDE이므로 Chrome 또는 Firefox와 Watir을 함께 사용하려고 할 때 많은 문제가 발생합니다. Chrome 또는 Firefox 브라우저에 대한 경로를 쓸 수 없기 때문입니다. 나는 또한 찾을 수있는 모든 대기 방식의 변형을 시도했지만 그 중 어느 것도 작동하지 않습니다.웹 페이지를 방문한 후 어떤 요소를 찾으려고 할 때 Watir 시간이 초과되었습니다.
def save
require 'watir'
require 'phantomjs'
@browser = Watir::Browser.new :phantomjs
@browser.goto "https://kroger.softcoin.com/programs/kroger/digital_coupons/?origin=DigitalCoupons&banner=Smiths#contentBox"
@browser.div(id: "contentBox").wait_until(&:present?).text
@products = @browser.divs
end
오류
는 "contentBox"#에 진정한 상태를 기다리고, 30 초 후에 시간 초과 : TAG_NAME => "DIV"}>
나는이 문제를 해결하려는 방법 Smiths 웹 사이트에서 데이터를 스크래핑하지 못하는 경우 크롬 브라우저를 사용하지만 "chromedriver 127.0.0.1:9515에 연결할 수 없습니다"라는 오류 메시지가 나타납니다.
Firefox에서는 제대로 작동하며 wait_until() 메소드를 사용할 필요가 없습니다. 왜냐하면 자동으로 : exist : present : enabled를 기다리기 때문입니다. 파이어 폭스 용 geckodriver를 사용하지 마십시오. 레거시 파이어 폭스를 사용하십시오. 제대로 작동합니다. – RAJ
절대적으로 필요한 경우가 아니면 레거시 Firefox를 사용하지 마십시오. geckodriver는이 시점에서 완전한 기능에 가깝습니다. 레거시 파이어 폭스는 곧 출시 될 Selenium 4에서는 옵션이 될 수 없을 것입니다. Chrome 드라이버는 현재 가장 잘 지원됩니다. Phantomj를 대신하여'Watir :: Browser.new : chrome, headless : true'를 확인하십시오. 훨씬 빠르며 유령은 더 이상 사용되지 않습니다. – titusfortner
@titusfortner 파이어 폭스가 52SEV 버전에서 셀레늄에 대한 지원을 복구한다는 것을 알고 계십니까? – RAJ