Ruby Watir Gem,定时输入表格

我正在使用Watir,Mechanize和Nokigirigem练习网页拼图。

我的Watir脚本遇到了问题。 我的计划是通过http://tripadvisor.com/获取航class价格清单。 当我运行脚本时,Chrome浏览器会按原样打开,脚本会继续填写表单的第一部分,原点和目标,然后停止。 这是我收到的错误消息:

This code has slept for the duration of the default timeout waiting for an Element to be present. If the test is still passing, consider using Element#exists? instead of rescuing UnknownObjectException /home/jaffejoe/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/watir-6.2.0/lib/watir/elements/element.rb:515:in `rescue in wait_for_present': element located, but timed out after 30 seconds, waiting for true condition on #"rt_leaveday", :tag_name=>"input"}> (Watir::Exception::UnknownObjectException) from /home/jaffejoe/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/watir-6.2.0/lib/watir/elements/element.rb:505:in `wait_for_present' from /home/jaffejoe/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/watir-6.2.0/lib/watir/elements/element.rb:522:in `wait_for_enabled' from /home/jaffejoe/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/watir-6.2.0/lib/watir/elements/element.rb:534:in `wait_for_writable' from /home/jaffejoe/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/watir-6.2.0/lib/watir/elements/element.rb:639:in `element_call' from /home/jaffejoe/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/watir-6.2.0/lib/watir/elements/element.rb:303:in `send_keys' from watir_test.rb:8:in `' </ 

这是我的代码:

 require 'watir' browser = Watir::Browser.new browser.goto('https://tripadvisor.com/CheapFlightsHome') browser.input(name: 'orig').send_keys('Boston, MA - Logan International Airport (BOS)') browser.input(name: 'dest').send_keys('Milan, Italy - All Airports (MIL)') browser.input(name: 'rt_leaveday').send_keys('1') browser.input(name: 'rt_leavemonth').send_keys('06/2017') browser.input(name: 'retday').send_keys('30') browser.input(name: 'leavemonth').send_keys('06/2017') browser.input(value: 'Search Flights').click puts browser.url browser.quit 

它不能在rt_leavedayrt_leavemonth上设置值,因为它们是隐藏的输入。 但是您可以执行脚本来单击dateselector

 require 'watir' browser = Watir::Browser.new browser.goto('https://tripadvisor.com/CheapFlightsHome') browser.text_field(name: 'orig').set('Boston, MA - Logan International Airport (BOS)') browser.text_field(name: 'dest').set('Milan, Italy - All Airports (MIL)') browser.execute_script('document.querySelector(".in_date").click()') browser.execute_script('document.querySelector(".day_28").click()') browser.execute_script('document.querySelector(".out_date").click()') browser.execute_script('document.querySelector(".day_2").click()') browser.span(id: "CHECK_FARES_BUTTON").fire_event :click puts browser.url browser.quit => https://www.tripadvisor.com/CheapFlightsSearchResults-g187849-a_airport0.BOS-a_airport1.MIL-a_cos.0-a_date0.20170328-a_date1.20170402-a_nearby0.no-a_nearby1.no-a_nonstop.no-a_pax0.a-a_travelers.1-Milan_Lombardy.html