【问题标题】:Selenium: How do I use javascript to clear a value from a form field?Selenium:如何使用 javascript 从表单字段中清除值?
【发布时间】:2009-10-27 19:49:08
【问题描述】:

我正在使用 selenium IDE 和 Selenium-Fitnesse Bridge 固定装置,我正在尝试测试当我从表单字段中清除默认值时,我的表单会显示一条错误消息。

所以当我使用 Selenium IDE 进行录制时,它的作用相当于告诉 Selenium 什么都不输入。

|类型 |文本字段 | |

问题在于我正在使用的 Fitnesse 装置要求第二个参数不为空。

Selenium 中有没有办法“清除值”而不是“不输入任何内容”?

【问题讨论】:

    标签: selenium fixtures fitnesse selenium-fitnesse-bridge


    【解决方案1】:

    你可以通过 javascript 来实现:

    | verifyEval | javascript{this.browserbot.getCurrentWindow().document.getElementById('CONTROL_ID').value = ''} || 
    

    verifyEval 语句实际上允许您执行任何您想要的 javascript。使用 Selenium 解决一些困难的问题变得更加简单。

    我用this tutorial(今天信不信由你)来解决问题。

    【讨论】:

    • 这实际上是行不通的。此外,要运行我们的 javascript,我们需要使用 runScript 而不是 verifyEval,但我认为类似的方法可能会起作用。不知道为什么上面的代码不起作用。
    • @Andrew - 什么具体不起作用?抛出更多细节,我会修改我的答案。
    • 我遇到了这个异常:java.lang.RuntimeException: this.browserbot.getCurrentWindow().document.getElementById('reg_start_date').value = '' was not found in capture value map
    • 所以 Andrew 逆向工作并找出问题所在。使用您的 js 调试技能,查看没有正确返回的内容,然后从那里继续工作。 javascript 正在评估中,现在轮到您研究如何应用它了。
    【解决方案2】:

    我用它来让它工作。 reg_start_date 是我输入字段的 id。

    | storeEval | window.document.getElementById('reg_start_date').value = '' |
    

    来自硒参考:

    请注意,默认情况下,sn-p 将在“selenium”对象本身的上下文中运行,因此this 将引用 Selenium 对象。使用window 来引用您的应用程序的窗口,例如window.document.getElementById('foo')

    另外,请避免使用 javascript{} 包装 javascript 代码,这将不起作用。

    【讨论】:

      【解决方案3】:

      我们一开始也遇到过这个问题。尝试:|类型 |文本字段 |空白 |

      查找有关使用空白和 null 的 Fitnesse 文档的更多信息。

      :)

      【讨论】:

        猜你喜欢
        • 2010-09-30
        • 1970-01-01
        • 2014-01-11
        • 2013-08-30
        • 2017-08-23
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多