如何通过按下按钮暂停/恢复WebDriver测试执行

时间:2012-10-29 10:15:39

标签: multithreading selenium webdriver selenium-webdriver

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

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

请提出任何想法???

2 个答案:

答案 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();
}

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