watir-webdriver没有找到或填写text_field

时间:2014-10-01 15:27:04

标签: ruby watir-webdriver

我正在开发一个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>

2 个答案:

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