Ruby Watir-文本\字段-带水印/预填充文本连接

Ruby Watir-文本\字段-带水印/预填充文本连接,ruby,watir,watir-webdriver,Ruby,Watir,Watir Webdriver,我是ruby的一个相对较新的用户,在使用预填充(或带水印)文本将文本输入文本字段时,我目睹了以下零星异常 我有一个带有电子邮件地址和密码字段的登录页面。 “电子邮件地址”字段有一些预先填充的文本,上面写着“在此处输入您的电子邮件地址” 当用户单击文本字段时,文本消失,准备接受实际输入 然而,在我的ruby/watir脚本的一些运行中,我发现我希望输入的值(使用browser.text_字段(:id,'name')。设置'mylogin')只是与预先填充的文本连接在一起(即,我看到'enter y

我是ruby的一个相对较新的用户,在使用预填充(或带水印)文本将文本输入文本字段时,我目睹了以下零星异常

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

然而,在我的ruby/watir脚本的一些运行中,我发现我希望输入的值(使用browser.text_字段(:id,'name')。设置'mylogin')只是与预先填充的文本连接在一起(即,我看到'enter your email address heremylogin'),而在其他运行中,它实现了我的预期,只输入'mylogin')

到目前为止,我只在Firefox 9.0/Mac OSX上尝试过这一点,所以不知道这是浏览器、操作系统还是被测站点的一个特点

<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">

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

提前谢谢

如果这是一个“有时它做这个,有时它做那个”的问题,我认为这是一个时间问题

尝试通过IRB()运行相同的代码

e、 g.
browser.text_字段(:id=>“emailAddress”).set(“my.email。address@whatever.com“”

如果有效,请刷新页面,然后使用
browser再次刷新。刷新

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

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

sleep 10
browser.text_field(:id => "emailAddress").set("my.email.address@whatever.com")
如果这样做有效,那么在页面加载和watir与该字段交互之间,您的站点会发生一些变化。找出原因,然后等待发生


可能使用类似于
browser的内容。请等到{browser.text\u字段(:id=>“emailAddress”)。value==“占位符文本”

可能有一些客户端代码清除了该字段。如果查看HTML,您可能会找到它。如果我猜测,我会先尝试“onfocus”

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

我要做的是使用irb和
.fire\u event
方法查看是否可以触发一个导致字段清除的事件,例如

browser.text_field(:id => "emailAddress").fire_event('onfocus')
如果您发现有一行清除了字段,那么请尝试将该行放在脚本中设置值的行之前

另一个选项是尝试
.value=
而不是
.set