如何在webdriver.quit()之后停止运行selenium测试?

时间:2015-05-06 22:01:32

标签: c# selenium selenium-webdriver selenium-chromedriver

我制作了一个Windows窗体应用程序来托管我的GUI以运行selenium测试。

当用户按下“运行测试”按钮时,它会启动一个chromedriver实例并运行所选的硒测试。

但是,假设在测试运行时,用户决定要停止测试,或者根本没有完成测试。

我在表单上有一个按钮,调用FixtureTearDown()以防万一发生这种情况。 FixtureTearDown就是:

if (_driver != null) _driver.Quit();

但是,如果你按下这个“停止测试”按钮,驱动程序会关闭,但是selenium测试会继续执行脚本,就像webdriver仍然打开一样,然后会抛出错误(因为它无法找到元素,因为驱动程序已关闭,duh)并导致我的Windows窗体应用程序崩溃。

那么,有没有办法优雅地停止运行selenium脚本?在此先感谢您的帮助,如果这是一个愚蠢的问题,我道歉,我仍然对selenium和c#一般都是新手。

3 个答案:

答案 0 :(得分:1)

好吧,我明白了。这可能不是很好的做法,但它可以做我需要做的事情。

在每个测试方法中,我将目标线程设置为即将开始的当前线程

Thread targetThread = Thread.CurrentThread;

然后,在"停止测试"单击,结束线程。

public void haltScript()
    {
        targetThread.Abort();
    }

就像一个魅力。

答案 1 :(得分:0)

function removeNthSpace(str, n) {
    var spacelessArray = str.split(' ');
    return spacelessArray
               .slice(0, n - 1) // left prefix part may be '', saves spaces
               .concat([spacelessArray.slice(n - 1, n + 1).join('')]) // middle part: the one without the space
               .concat(spacelessArray.slice(n + 1)).join(' '); // right part, saves spaces
}

NOT 停止执行测试。它将继续,直到所有测试都在类/套装中执行完毕,具体取决于您的设置方式。该部分通常由测试运行员处理。调用测试运行器使用的机制来停止从您创建的应用程序执行测试。

答案 2 :(得分:0)

这是我的建议。

1)您可以设置公共“flag”变量,如布尔值。开始测试时,它将设置为false。 “停止测试”按钮将其设置为true。在测试运行时,应检查其值是否正确。如果为true,它将退出测试脚本。

2)您可以将其设置为在不同的线程上运行。然后,“停止测试”将停止运行测试的线程。

您可以在此处参考:https://msdn.microsoft.com/en-us/library/7a2f3ay4(v=vs.90).aspx进行设置。

希望这有帮助。