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