预加载浏览器剪贴板,用于测试使用watir-webdriver粘贴到字段中

时间:2011-06-28 09:50:10

标签: watir watir-webdriver

我们的网络应用程序有一些事件代码可以“格式化”任何粘贴到字段中的文本,这样任何HTML样式都不会破坏我们的数据。

预加载浏览器剪贴板以便我可以测试粘贴到输入字段的好方法是什么?

有没有办法以编程方式进行,或者我会让测试脚本访问“源页面”并复制文本,然后再转到我们的应用程序?

欢迎任何想法或代码片段。

2 个答案:

答案 0 :(得分:3)

使用剪贴板取决于您的平台。例如。在OS X上,您可以使用pbcopy和Command-V:

open('|pbcopy', 'w') { |io| io << 'some text' }
browser.text_field(:name => 'q').send_keys([:command, 'v'])

我知道Linux上有等价物(xclip?)。对Windows不确定。

答案 1 :(得分:1)

我会考虑使用.value =方法来设置值。如果它实现与watir相同,那么它不会导致事件被触发并且直接设置值,然后通过发送适当的事件来跟进它(取决于是否有任何事件是什么)监控)如onKeypress。我试图从the Watir-webdriver rdoc for textfield弄清楚,如果.set和.value =之间的这种区别得到了保持,但是文档描述它们的方式(至少在那里)使它们看起来可以互换......(Jarib你能澄清一下吗? ??)

根据您使用的控件,您可能需要首先触发类似onFocus的内容。例如,如针对jquery掩码的SO案例Setting a text field that has a JQuery mask on it所述,他们必须最终触发unmask事件才能设置字段。

这是利用此处描述的技术How to find out which JavaScript events fired?以及在该问题的评论中链接的SO项目中的一个很好的案例,以确定在手动将某些内容粘贴到字段时触发的事件。 (注意我会使用鼠标,但也使用tab之类的东西在字段之间移动并设置焦点,这两种方法常见的事件是最有可能由控件实现的事件。

我认为你有某种客户端javascript,需要检查粘贴到字段中的内容,以及此测试的原因。如果你使用标准的HTML字段,没有javascript的东西,那么我会认为这个特定的测试用例与“测试浏览器”有效,因为在输入字段中支持剪切和粘贴是标准的浏览器功能。在这种情况下,你有点'不在预订',我不打扰这样的测试用例。