1

设计:

第一个下拉菜单:

<select id="MainContent_drpVehicleType" style="width:175px;" name="ctl00$MainContent$drpVehicleType">
<option value="">- SELECT -</option>
<option value="1" title="AUTO">AUTO</option>
<option value="2" title="HD">HD</option>
<option value="3" title="MARINE">MARINE</option>
</select> 

第二个下拉:

<select id="MainContent_drpMake" style="width:175px;" name="ctl00$MainContent$drpVehicleType">
<option value="1" title="ACURA">ACURA</option>
<option value="2" title="ALFA ROMEO">ALFA ROMEO</option>
<option value="74" title="ALLIS CHALMERS LIFT TRUCK">ALLIS CHALMERS LIFT TRUCK</option>
<option value="75" title="ALLIS CHALMERS TRACTOR">ALLIS CHALMERS TRACTOR</option>
<option value="4" title="AMERICAN MOTORS">AMERICAN MOTORS</option
</select>

用于执行的代码:

b.select_list(:id, "MainContent_drpVehicleType").select("AUTO")

b.select_list(:id, "MainContent_drpMake").select("ACURA")

也试过

`b.select_list(:id, "MainContent_drpMake").wait_until_present.option(:text, 'ACURA')`

**我的问题是能够从第一个下拉列表中选择“AUTO”,而无法从第二个下拉列表中选择“ACURA”

执行时出错:

C:/Ruby193/menu.rb:23:in `<main>': 
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.2/lib/watir-webdriver/el
ements/select.rb:218:in `no_value_found': "ACURA" not found in select list (Wati
r::Exception::NoValueFoundException)
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.2/lib/watir
-webdriver/elements/select.rb:152:in `rescue in select_by_string'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.2/lib/watir
-webdriver/elements/select.rb:149:in `select_by_string'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.2/lib/watir
-webdriver/elements/select.rb:131:in `select_by'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.2/lib/watir
-webdriver/elements/select.rb:64:in `select'
        from C:/Ruby193/menu.rb:23:in `<main>'**
4

1 回答 1

5

听起来您的第二个下拉列表是在选择第一个下拉列表值后填充的。在这种情况下,您需要等待第二个下拉列表被填充(而不是第二个下拉列表出现)。

您可以等待特定选项出现,然后通过执行以下操作进行设置:

#The option element that you want:
option = b.select_list(:id, "MainContent_drpMake").option(:text => "ACURA")

#Wait for the option to appear
option.wait_until_present

#Set the option
option.select

或者,如果您想在一行上完成,您可以使用when_present

b.select_list(:id, "MainContent_drpMake").option(:text => "ACURA").when_present.select
于 2013-03-09T13:56:30.727 回答