我想在按下按钮时暂停/恢复我的 webdriver 测试用例执行。
我想出的方法是使用 Thread 类的挂起和恢复方法。但我想确保在 webdriver 输入文本或其他内容时它不应该暂停。好像它会这样做,浏览器可能会从那一点失去焦点。所以我想确保 element.sendKeys 或 element.click 的原子执行。
请提出任何想法???
我想在按下按钮时暂停/恢复我的 webdriver 测试用例执行。
我想出的方法是使用 Thread 类的挂起和恢复方法。但我想确保在 webdriver 输入文本或其他内容时它不应该暂停。好像它会这样做,浏览器可能会从那一点失去焦点。所以我想确保 element.sendKeys 或 element.click 的原子执行。
请提出任何想法???
只需在调试模式下运行测试。然后你可以暂停整个 JVM。这将产生暂停 WebDriver 的效果。
我认为您最好的选择是实现您自己的同步并围绕 Selenium 启动/停止。实现此目的的一种方法是使用监视器和布尔标志保护对 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();
}
那只是一个非常简单的解决方案。有更复杂的同步样式,但这一种应该就足够了。