我们的 Web 应用程序有一些事件代码来“格式化”任何粘贴到字段中的文本,这样任何 HTML 样式都不会破坏我们的数据。
预加载浏览器剪贴板以便我可以测试粘贴到输入字段的好方法是什么?
有没有办法以编程方式进行,或者我会让测试脚本访问“源页面”并在移动到我们的应用程序之前复制文本?
欢迎任何想法或代码片段。
我们的 Web 应用程序有一些事件代码来“格式化”任何粘贴到字段中的文本,这样任何 HTML 样式都不会破坏我们的数据。
预加载浏览器剪贴板以便我可以测试粘贴到输入字段的好方法是什么?
有没有办法以编程方式进行,或者我会让测试脚本访问“源页面”并在移动到我们的应用程序之前复制文本?
欢迎任何想法或代码片段。
使用剪贴板将取决于您的平台。例如,在 OS X 上,您可以使用 pbcopy 和 Command-V:
open('|pbcopy', 'w') { |io| io << 'some text' }
browser.text_field(:name => 'q').send_keys([:command, 'v'])
我知道 Linux 上有等价物(xclip?)。不确定Windows。
我会考虑使用 .value= 方法来设置值。如果它的实现方式与 watir 中的相同,那么它不会触发任何事件并直接设置值,然后通过发送适当的事件(取决于是否正在监视任何事件)来跟进,例如 onKeypress。我试图从textfield 的 Watir-webdriver rdoc 中弄清楚,如果 .set 和 .value= 之间的这种区别已经保持,但是文档描述它们的方式(至少在那里)使它们看起来可以互换..(Jarib 你能阐明???)
根据您使用的控件,您可能需要首先触发 onFocus 之类的东西。例如,如本 SO 案例中所述,为 jquery 掩码设置一个带有 JQuery 掩码的文本字段,他们最终必须触发一个取消掩码事件才能设置该字段。
这是利用此处描述的技术的一个很好的案例如何找出触发了哪些 JavaScript 事件?并在该问题的评论中链接的 SO 项目中,找出当您手动将某些内容粘贴到字段中时会触发哪些事件。(请注意,我会同时使用鼠标,但也使用选项卡之类的东西在字段之间移动并设置焦点,这两种方法共有的事件最有可能由控件实现。
我假设您有某种客户端 javascript 需要检查粘贴到该字段中的内容,以及此测试的原因。如果您使用的是标准 HTML 字段,没有 javascript 内容,那么我认为这个特定的测试用例实际上与“测试浏览器”相同,因为在输入字段中支持剪切和粘贴是标准浏览器功能。在那种情况下,您有点“不接受预订”,我不会为这样的测试用例而烦恼。