0

我想在按下按钮时暂停/恢复我的 webdriver 测试用例执行。

我想出的方法是使用 Thread 类的挂起和恢复方法。但我想确保在 webdriver 输入文本或其他内容时它不应该暂停。好像它会这样做,浏览器可能会从那一点失去焦点。所以我想确保 element.sendKeys 或 element.click 的原子执行。

请提出任何想法???

4

2 回答 2

2

只需在调试模式下运行测试。然后你可以暂停整个 JVM。这将产生暂停 WebDriver 的效果。

于 2012-10-29T10:46:25.147 回答
1

我认为您最好的选择是实现您自己的同步并围绕 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();
}

那只是一个非常简单的解决方案。有更复杂的同步样式,但这一种应该就足够了。

于 2012-10-29T10:39:34.237 回答