Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如果选择列表有选项,请签入watir_Ruby_Watir - Fatal编程技术网

Ruby 如果选择列表有选项,请签入watir

Ruby 如果选择列表有选项,请签入watir,ruby,watir,Ruby,Watir,现在我有了这样的watir代码: require "watir-webdriver" browser = Watir::Browser.new :ff browser.driver.manage.timeouts.implicit_wait = 3 #3 seconds browser.goto "https://page***/default.aspx" browser.select_list(:name => 'ctl00$tresc$cbListaKrajow'

现在我有了这样的watir代码:

require "watir-webdriver"

  browser = Watir::Browser.new :ff
  browser.driver.manage.timeouts.implicit_wait = 3 #3 seconds
  browser.goto "https://page***/default.aspx"


  browser.select_list(:name => 'ctl00$tresc$cbListaKrajow').select_value('6')
  puts "Selected country"  
  browser.select_list(:name => 'ctl00$tresc$cbListaPlacowek').wait_until_present
  browser.select_list(:name => 'ctl00$tresc$cbListaPlacowek').select_value('95')
  puts "Selected city"  
但主要的问题是,
ctl00$tresc$cbListaPlacowek
只通过

ctl00$tresc$cbListaKrajow  is changed. It could take 1 or 30 seconds so `browser.driver.manage.timeouts.implicit_wait = 3 #3 seconds`  is not a good idea. How can i write that it try to select option unless it is present? Now i get errors like it could find such option...
我自己创立的:

 Watir::Wait.while { browser.select_list(:name => 'ctl00$tresc$cbListaPlacowek').include?('95') }

请注意,您还可以执行以下操作:

browser.select_list(:name => 'ctl00$tresc$cbListaPlacowek').option(:value => '95').wait_until_present
只是写得好一点

更新:

如果要等待选择列表中出现任何选项,可以执行以下操作:

browser.select_list(:name => 'ctl00$tresc$cbListaPlacowek').option.wait_until_present
从技术上讲,这是在等待第一个选项出现。请注意,根据您正在做的事情,这可能会给您带来误报。例如,如果选择列表已经填充了选项,则您触发一些事件来重新填充列表,选择列表将已经有第一个选项。在这种情况下,您可能还必须检查选项列表是否已更改

如果要选择一个值与数组中任意值匹配的选项,可以执行以下操作:

browser.select_list(:name => 'ctl00$tresc$cbListaPlacowek').options.find do |option|
  somearray.include?(option.value)
end.select

好的,但是如何还要等到select中出现一些东西呢?例如一个选项(不知道值等)。。。不仅是nil..,还有如何查看for.选项(:value=>somearray)(如果value在数组中?)请尝试在新问题中提出新问题。你会对这个问题有更多的看法,因此更有可能得到更多的答案。