使用Selenium Webdriver在输入字段中键入'/'符号的问题

时间:2019-09-04 14:34:50

标签: selenium-webdriver groovy selenium-chromedriver geb

Geb: org.gebish:geb-spock:2.2
Groovy: 'org.codehaus.groovy:groovy:2.5.2
Webdriver: 76.0.3809.12
Chrome: 76.0.3809.132

最近我遇到了非常奇怪的硒行为:

测试将值键入输入字段,该字段应该表示某个文件的路径。测试输入数据来自json文件,并以Map<String, Object>的形式进入测试:

{
      "name": "Preview_Geometry_out",
      "value": "geometry/previewGeometry.stl",
}

问题在于/符号从键入的值中消失了,因此输入值显示为:“ geometrypreviewGeometry.stl”

我在设置值的方法中添加了一些调试:

 private Closure processParameterData = { Navigator el, String newValue ->
    if (newValue) {
        println "Typing: " + newValue
        el.value(newValue)
        println "Actual value: " + el.value()
        return newValue
    }
    el.value()
}

输出为:

    Typing: geometry/previewGeometry.stl
    Actual value: geometrypreviewGeometry.stl

但是当我录制视频时,我确实要看到键入的值在键入时没有包含斜杠,因此这不是js等对字段值的后处理。< / p>

我用普通的硒API尝试过,将el.value(newValue)替换为el.singleElement().sendKeys(newValue)。结果是一样的。

我无法手动复制此内容。 当测试在Win10笔记本电脑上的Chrome中运行时,我无法重现。但是,当通过Jenkins在CentOS上远程运行测试时(测试部署在同一主机上的同一应用程序),该问题出现在我项目的多个位置。这些输入上没有任何特定的js函数或CSS样式。

有什么想法吗? 提前致谢。


UPD::经过一些调试,我发现仅当表单上显示滚动条时才会出现此问题:在这种情况下,表单在(而不是),然后输入“ /”符号。转义它并没有帮助,而且暂停和睡眠。 我目前唯一的解决方法是:

if (newValue.contains('/')) {
    js.exec(el.singleElement(), "arguments[0].value = '$newValue'")
} else {
    el.value(newValue)
}

0 个答案:

没有答案