我想按一下按钮暂停/恢复我的webdriver测试用例执行。
我提出的方法是使用Thread类suspend和resume方法。但我想确保它不会在webdriver输入文本或其他东西时暂停。好像它会这样做,浏览器可能会从那一点上失去焦点。所以我想确保element.sendKeys或element.click的原子执行。
请提出任何想法???
答案 0 :(得分:2)
只需在调试模式下运行测试即可。然后你可以暂停整个JVM。这将产生暂停WebDriver的效果。
答案 1 :(得分:1)
我认为你最好的选择是实现自己的同步并在Selenium周围启动/停止。实现此目的的一种方法是使用 monitor 和布尔标志来保护对WebDriver API方法的每次调用,以指示某些其他实例要暂停测试执行:
private boolean suspend = false;
private Object monitor = new Object();
每次API调用之前的代码可能如下所示:
synchronized (monitor) {
if (suspend) {
try {
monitor.wait();
} catch (InterruptedException ex) {
// thrown if someonelse calls notify
}
}
}
如果要暂停测试执行,则需要让某人(即另一个线程)执行以下代码:
synchronized (monitor) {
suspend = true;
}
要再次继续,您需要执行以下代码:
synchronized (monitor) {
monitor.notifyAll();
}
这只是一个非常简单的解决方案。有更复杂的同步样式,但这个应该足够了。