watir webdriver select_list元素不可见错误

时间:2013-06-20 12:28:48

标签: selenium-webdriver watir-webdriver

我正在尝试使用watir-webdriver从选择列表中选择一个选项。

watir-webdriver gem版本:0.6.4 mac osx lion上的Ruby 1.9.3

选择列表的HTML:

<select id="cc.expiryMonth" name="cc.expiryMonth">
<option value="0">Month</option>
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>

我使用的代码是

@browser.select_list(:name => "cc.expiryMonth").options[4].select

我收到错误

Element is not currently visible and so may not be interacted with (Selenium::WebDriver::Error::ElementNotVisibleError)
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:7736:in `fxdriver.preconditions.visible'
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:10437:in `DelayedCommand.prototype.checkPreconditions_'
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:10456:in `DelayedCommand.prototype.executeInternal_/h'
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:10461:in `DelayedCommand.prototype.executeInternal_'
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:10401:in `DelayedCommand.prototype.execute/<'
  ./features/step_definitions/Wotif_FlightSearch_DOM_steps.rb:145:in `/^I enter all details on booking page$/'

通过gem库中的watir-webdriver代码并用尽所有选择选项的方法,所有这些都会抛出同样的错误。

@browser.select_list(:name => "cc.expiryMonth").focus

成功,但选择选项会抛出元素不可见错误。 也试过send_keys失败了。 非常感谢有关如何处理此

的任何建议

更新

@browser.select_list(:name => "cc.expiryMonth").options[8].value

返回值,但

@browser.select_list(:name => "cc.expiryMonth").options[8].select

@browser.select_list(:name => "cc.expiryMonth").select @browser.select_list(:name => "cc.expiryMonth").options[8].value returns element not found error    

4 个答案:

答案 0 :(得分:0)

你尝试过这个:

@browser.select_list(:name => "cc.expiryMonth").select '04'

甚至

b = Watir::Browser.start 'bit.ly/watir-webdriver-demo'
s = b.select_list :name => 'cc.expiryMonth'
s.select '04'
s.selected_options

告诉我发生了什么

答案 1 :(得分:0)

这可能是一个时间问题。试试这个:

@browser.select_list(:name => "cc.expiryMonth").options[4].when_present.select

http://watirwebdriver.com/waiting/

的更多信息

答案 2 :(得分:0)

我想知道页面上是否有多个具有此名称的选择列表,而Watir-webdriver正在等待第一个元素,但是可见的那个实际上是第二个元素。

尝试一下:

 p @browser.select_lists(:name => "cc.expiryMonth").count

在命令提示符/ mac等效命令中返回的值是否大于1?如果是这样,您可以使用索引来选择您想要的索引

@browser.select_list(:name => "cc.expiryMonth", :index => 1).select("04")

答案 3 :(得分:-2)

我终于能够通过关注stackoverflow上的其他一个问题来解决这个问题,其中的建议是使用javascript来选择选择列表中的选项。没有其他工作。最后还有一些工作