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)
}