将 selenium webdriver 与 PhantomJS 一起使用时,我遇到了一些问题。
我得到的印象是不同的操作没有在页面本身上执行。如果我尝试运行一些改变页面上元素的东西并且测试完全执行而没有任何错误,然后在常规浏览器中打开页面,编辑的元素似乎没有改变。
将 selenium webdriver 与 PhantomJS 一起使用时,我遇到了一些问题。
我得到的印象是不同的操作没有在页面本身上执行。如果我尝试运行一些改变页面上元素的东西并且测试完全执行而没有任何错误,然后在常规浏览器中打开页面,编辑的元素似乎没有改变。
验证应该由操作触发的方法确实没有被执行。你可以这样做:
首先,重写该方法以“注入”一些将由操作触发的标志(它是 Scala 代码,但您应该明白这一点):
val js: JavascriptExecutor = webDriver.asInstanceOf[JavascriptExecutor]
js.executeScript(myScript)
lazy val myScript: String = {
s"""
window.openNewWindowFlag = false;
SDK.openNewWindowFlag = function(url, width, height, onClose) {
openNewWindowFlag = true;
};
"""
}
请注意,我们在全局(窗口)范围内添加标志。然后,运行应该调用某个方法(我们覆盖的方法)的操作并检查标志是否更改:
val js: JavascriptExecutor = webDriver.asInstanceOf[JavascriptExecutor]
val isMethodTriggered = js.executeScript("return openNewWindowFlag").toString.toBoolean