使用Ruby-watir / selenium在文本字段中插入值

时间:2014-07-11 19:46:11

标签: ruby selenium textbox numbers watir

我正在尝试使用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")

感谢您的帮助

2 个答案:

答案 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")