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

使用Ruby-watir/selenium在文本字段中插入值,ruby,selenium,textbox,numbers,watir,Ruby,Selenium,Textbox,Numbers,Watir,我正在尝试使用Ruby-Watir/Selenium在“我的Id”中插入一个数字 不知何故,字段字段未被识别为文本框,因此我无法通过代码输入值 id“inputdrs”在同一页上使用多次 任何关于如何实现它的建议。 URL是这样的 以下选项不起作用: @browser.text_field(:id => /inputdrs/, :index => 2).set("3607277") browser.text_field(:name, "inputdrs").set("360727

我正在尝试使用Ruby-Watir/Selenium在“我的Id”中插入一个数字
不知何故,字段
字段未被识别为文本框,因此我无法通过代码输入值

id“inputdrs”在同一页上使用多次

任何关于如何实现它的建议。 URL是这样的

以下选项不起作用:

@browser.text_field(:id => /inputdrs/, :index => 2).set("3607277")

browser.text_field(:name, "inputdrs").set("3607277")

感谢您的帮助

问题

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
矿山ID字段的html为:

<input size="8" maxlength="8" name="MineId" onclick="this.value='';" id="inputdrs" align="middle" type="number">
将失败,因为它输入了错误的文本字段。如果您获得所有具有该id的文本字段:

browser.text_fields(:id => 'inputdrs').collect(&:name)
#=> ["q", "MineId", "OperSearch", "MineName", "CntctrId", "CntCtrSearch", "Controller"]
您可以看到它是第二个字段。但是,由于Watir使用的是基于0的索引,因此实际上您得到了OperSearch字段。这可以通过使用
:index=>1
来实现

该行:

@browser.text_field(:id => /inputdrs/, :index => 2).set("3607277")
browser.text_field(:name, "inputdrs").set("3607277")
将失败,因为“inputdrs”是id属性的值,而不是name属性

browser.text_field(:name => "MineId").set("3607277")
解决方案

鉴于id属性值对于该页面不是唯一的,您可能不应该使用它来定位。相反,请使用一些独特的属性,例如name属性

browser.text_field(:name => "MineId").set("3607277")

他们怎么不工作?是否有例外,或者什么都没有发生?如果有例外,你能编辑你的帖子并添加吗?谢谢回复。解决方案是有效的。我可以在矿井id中插入一个号码,但现在我无法单击旁边的“搜索”按钮$browser.button(:src,"对不起,我不是想问一些琐碎的问题,但这在昨天早些时候的IE上起了作用。另外,我是从FF上的Test Wise Recorder获得的。谢谢。这个解决方案很有效。看起来IE和FF的响应不同。我在FF上的家中笔记本电脑上尝试了这个解决方案,它很有效。我将在周一在IE上再次检查我办公室的工作电脑然后让你知道它是否有效:)谢谢。这个解决方案有效。看起来IE和FF的反应不同。我在家里的FF笔记本电脑上试用了这个解决方案,效果很好。我会在周一再次检查我在办公室的工作电脑,让你知道它是否工作:)