Watir - text_field - 加水印/预先填充的文本串联

时间:2012-01-19 10:17:35

标签: ruby watir watir-webdriver

我是ruby的一个相对较新的用户,并且通过使用预先填充(或加水印)的文本在文本字段中输入文本,目睹了以下零星异常。

我有一个包含电子邮件地址和密码字段的登录页面。 电子邮件地址字段包含一些预先填充的文字,上面写着“在此处输入您的电子邮件地址” 当用户单击文本字段时,文本将消失,准备接受实际输入。

然而,在我的ruby / watir脚本的一些运行中,我发现了我想要输入的值(使用browser.text_field(:id,'name')。set'mylogin' )只是简单地与预先填充的文本连接(即所以我看到'输入你的电子邮件地址heremylogin'),在其他运行中,它做我期望的,只是输入'mylogin')

到目前为止,我只是在Firefox 9.0 / Mac OSX上试过这个,所以不知道它是浏览器,操作系统还是测试中的网站的特性。有问题的字段的html看起来像这样:

<input name="ctl00$MainContentPlaceHolder$TextBox_email" type="text" id="ctl00_MainContentPlaceHolder_TextBox_email" style="color:#0B404E;border-color:#A4A4A4;border-width:1px;border-style:Solid;font-family:Arial;font-size:15px;font-weight:bold;width:318px;padding: 4px 10px;" class="watermarked" autocomplete="off">

<input type="hidden" name="ctl00$MainContentPlaceHolder$TextBoxWatermarkExtender_email_ClientState" id="ctl00_MainContentPlaceHolder_TextBoxWatermarkExtender_email_ClientState">

是否有另一种方法可以在不触发此异常的情况下将文本插入此字段?

提前致谢

d

2 个答案:

答案 0 :(得分:0)

如果它是“有时它会这样做,有时会这样做”问题,我会认为这是一个时间问题。

尝试通过IRB(http://wiki.openqa.org/display/WTR/IRB

运行相同的代码

e.g。 browser.text_field(:id => "emailAddress").set("my.email.address@whatever.com")

如果可行,请刷新页面并使用browser.refresh

重新执行此操作

如果使用IRB始终输入正确的电子邮件地址,则很可能是时间问题。

在将电子邮件地址放入字段之前,通过向脚本添加一个小睡眠进行测试,例如

sleep 10
browser.text_field(:id => "emailAddress").set("my.email.address@whatever.com")

如果这样可行,则在页面加载之间以及当watir与该字段交互时,网站上的某些内容会发生变化。找出什么,并等待它发生。

可能与browser.wait_until{browser.text_field(:id => "emailAddress").value == "The placeholder text"

类似

答案 1 :(得分:0)

可能有一些客户端代码可以清除该字段。如果你查看HTML,你可能会发现它。如果我猜测我会尝试'onfocus''第一次

当watir填写该字段时,很多事情发生得很快,客户端代码可能没有机会清除先前的内容。

我要做的是使用irb和.fire_event方法来查看是否可以触发导致字段清除的事件。

browser.text_field(:id => "emailAddress").fire_event('onfocus')

如果找到一个清除该字段的字段,那么请尝试将该行放在脚本中设置值的行之前

另一种选择是尝试.value=而不是.set