Watir WebDriver选择没有标准html的列表

时间:2016-06-30 17:25:44

标签: ruby selenium watir watir-webdriver

刚刚开始使用Watir-WebDriver,遇到并遇到问题。

1) Goto "https://www.smiles.com.br/home"
2) How to get/set values to drop down selections like selecting number of adults in "Adulto"

最初选择列表是隐藏的,但是当单击文本字段时,它会在浏览器中显示。 但是,当我尝试使用单击并检查其存在时,它返回false

1) b.text_field(:id => "inputOrigin").click

2) irb(main):049:0> b.a(:id => 'yui_patched_v3_11_0_1_1467245841395_1777').exist?
=> false

由于它实际上不是选择列表,我该如何设置值? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

ID是动态的,因此每次都会更改。看起来它可能基于时间,但这应该是非常独特的:

b.link(id: /^yui_patched_v3_11_0_1_/)

答案 1 :(得分:0)

点击<input id="inputOrigin">后,您需要执行另一次点击以触发“下拉列表”列表。否则,您将收到element not visible错误。你可以这样做:

require 'watir-webdriver'
b = Watir::Browser.new :chrome
b.goto('https://www.smiles.com.br/home')

b.text_field(:id => "inputOrigin").when_present.click
b.div(:id => "dk_container_qtdAdult").when_present.click           #trigger "dropdown" menu

b.div(:class => "adult").link(:text => "02").when_present.click
# b.div(:class => "adult").link(:data_dk_dropdown_value => "02").click      #an alternative

选择后,您可以使用.text方法获取该选项:

puts b.div(:id => "dk_container_qtdAdult").link(:class => "dk_toggle dk_label").text

最后,您可以使用正则表达式定位器,但通过尝试识别更多离散(和 - 理想 - 唯一)页面元素,您可能会获得更多成功。