我正在尝试使用Ruby - Watir / Selenium在'Mine Id'中插入一个数字
不知何故,字段<input>
字段未被识别为文本框,因此我无法通过代码输入值。
id'inputdrs'在同一页面上多次使用。
任何建议如何实现它。 URL是这个
http://www.msha.gov/drs/drshome.htm
以下不起作用:
@browser.text_field(:id => /inputdrs/, :index => 2).set("3607277")
browser.text_field(:name, "inputdrs").set("3607277")
感谢您的帮助
答案 0 :(得分:0)
require 'watir-webdriver'
$browser = Watir::Browser.start "http://www.msha.gov/drs/drshome.htm"
a = 0
b = $browser.text_fields.length
while a < b
$browser.text_fields[a].set a
a += 1
end
这会将每个文本字段中a的值放在此页面上。我真的抽出了循环,所以你可以看到发生了什么。这不像你想要的那样动态,但是如果页面有相同数量的text_fields你应该没问题。
或者你可以做点什么......
$browser.text_field(:name => "MineId").select
$browser.send_keys "hello"
答案 1 :(得分:0)
<强>问题强>
Mine ID字段的html是:
<input size="8" maxlength="8" name="MineId" onclick="this.value='';" id="inputdrs" align="middle" type="number">
该行:
@browser.text_field(:id => /inputdrs/, :index => 2).set("3607277")
因为输入错误的文本字段而失败。如果您获得具有该ID的所有文本字段:
browser.text_fields(:id => 'inputdrs').collect(&:name)
#=> ["q", "MineId", "OperSearch", "MineName", "CntctrId", "CntCtrSearch", "Controller"]
你可以看到它是第二个字段。但是,由于Watir使用的是基于0的索引,因此您实际上获得了OperSearch字段。这可以通过使用:index => 1
代替。
该行:
browser.text_field(:name, "inputdrs").set("3607277")
会失败,因为&#34;输入&#34;是id属性的值,而不是name属性。
<强>解决方案强>
鉴于id属性值对于此页面不是唯一的,您可能不应该使用它来定位。相反,使用一些独特的东西,例如name属性。
browser.text_field(:name => "MineId").set("3607277")