我正在开发一个watir-webserver Ruby脚本,我首先提示用户输入用户名和密码(使用Ruby-Tk)。
无论如何,我可以使用以下代码打开页面:
b = Watir::Browser.start 'https://connect.mypage.com/Home'
之后,我打电话给以下人员:
t1=b.text_field(:id => 'ctl00_cphBody_txtUserName').when_present.set @entry1.textvariable
什么都没有填写。
我已尝试为ctl00_cphBody_txtUsername编写一个名称,但这也不起作用。
在Firefox中使用Inspector,该字段构造如下:
<input name="ctl00$cphBody$txtUsername" id="ctl00_cphBody_txtUsername" class="firstFocus" maxlength="50" type="text">
firstFocus的类是:
<script type="text/javascript">
$(document).ready(function () {
jQuery('.firstFocus').focus();
});
</script>
答案 0 :(得分:0)
如果我启动浏览器并打开下面的页面,我可以找到这两个text_field:
browser = Watir::Browser.new
browser.goto 'https://connect.mypage.com/Home'
#Then, the first item actually has a class, so I use that
t1=browser.text_field :class => 'firstFocus'
t1.set @entry1.textvariable
答案 1 :(得分:0)
问题是定位器区分大小写。
请注意,id属性值为&#34; ctl00_cphBody_txtUsername&#34;但正在使用的定位器是&#34; ctl00_cphBody_txtUserName&#34;。由于&#34; N&#34;如果不匹配&#34; n&#34;,则永远不会找到该元素,这就是when_present
超时的原因。
更正定位器中的ID将解决问题:
t1=b.text_field(:id => 'ctl00_cphBody_txtUsername').when_present.set @entry1.textvariable