繁体   English   中英

硒-在本地并行运行测试

[英]Selenium - Running tests in parallel locally

我正在尝试在本地并行运行我的硒测试,并且通过在线阅读我知道我可以使用TestNG来进行。 我有以下示例代码,使我可以并行运行2个测试。

的testng.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Parallel" thread-count="2" parallel="methods" >
    <test name="testing">
        <classes>
            <class name="Sessions"/>
        </classes>
    </test>
</suite>

Sessions.class

@Test
public void testSessionOne() throws IOException {
    WebDriver driver = new ChromeDriver();
    driver.get("http://www.google.co.uk");
    driver.findElement(By.name("q")).sendKeys("one");
}

@Test
public void testSessionTwo() throws IOException {
    WebDriver driver = new ChromeDriver();
    driver.get("http://www.google.co.uk");
    driver.findElement(By.name("q")).sendKeys("two");
}

效果很好,但是我想使用PageObjectModel框架。 我已经对测试进行了一些更改,因此现在看起来像这样。 (我保留了相同的testng.xml)。

Sessions.class

public void testSession1() throws IOException{
    WebDriver driver = getDriver();
    open(driver, url);
    enterTextInSearchField(driver, "one");
}

MyMethods.class

public WebDriver getDriver(){
    return new ChromeDriver();
}

public void open(WebDriver driver, String url) {
    driver.get(url);
}

public void enterTextInSearchField(WebDriver driver, String search) {
    driver.findElement(By.name("q")).sendKeys(search);
}

我现在遇到的问题是,我需要始终将“驱动程序”作为参数传递给所有方法。 如果我不这样做,测试会感到困惑,并尝试在同一浏览器上运行所有内容。 有没有更好的方法可以做到这一点,使我仍然能够并行运行而不必将驱动程序作为参数传递?

其中之一,你可以看一下选项是利用ThreadLocal变量,其中,无论是在@BeforeMethod (或)在org.testng.IInvokedMethodListener#beforeInvocation()在(或) org.testng.IHookable实现你可以有你WebDriver实例化已完成,并推送到ThreadLocal变量中,您的@Test方法可以弹出该变量并对其进行处理。

我已经在我的这篇博客文章中对此进行了解释。 请查看是否有帮助。

博客链接: https : //rationaleemotions.wordpress.com/2013/07/31/parallel-webdriver-executions-using-testng/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM