java - 使用 Selenium、TestNG 和 Cucumber-JVM 时共享 WebDriver 实例

标签 java selenium testng cucumber-jvm

我正在尝试将 Cucumber-JVM 添加到我一直在从事的 TestNG 和 Selenium 项目中,我目前在该项目中通过类似这样的测试套件在网格上重新使用浏览器:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Grid" thread-count="2" parallel="tests">
    <test name="Firefox 27.0">
        <parameter name="browser" value="Firefox"/>
        <parameter name="browser_version" value="27.0"/>
        <packages>
            <package name="[Test package name]"/>
        </packages>
    </test>
    <test name="IE 11">
        <parameter name="browser" value="IE"/>
        <parameter name="browser_version" value="11.0"/>
        <packages>
            <package name="[Test package name]"/>
        </packages>
    </test>
</suite>

包中的每个测试类然后在基类中的 setUp 方法中获取参数,如下所示:

@BeforeClass
@Parameters({"browser", "browser_version"})
public void setUp(String browser, String browser_version) throws MalformedURLException {
    // Do the setup with WebDriver and assign to an object property
}

但是,我希望有一个在所有测试类之间共享的静态或注入(inject)类,以避免每次都重新初始化浏览器,这也应该让我在各个步骤定义文件之间共享 WebDriver 实例。有谁知道如何做到这一点?

最佳答案

您可以使用 Pico Container,它与 Cucumber-JVM 一起打包。

然后在测试类的构造函数中,您可以请求驱动程序:

public class TestClass {

    WebDriver driver;

    public TestClass(WebDriver driver) {
        this.driver = driver;
    }
}

PicoContainer 会自动将 webdriver 的实例传递给该类,任何其他具有类似构造函数的类也将获得相同的实例。

文档链接:http://picocontainer.codehaus.org/constructor-injection.html

关于java - 使用 Selenium、TestNG 和 Cucumber-JVM 时共享 WebDriver 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22225073/

相关文章:

java - 串口的NoSuchPortException问题

java - 我想将文件的内容按行分割成数组列表,并在正确的标识符下重建它们

java - Eclipse(Android Bundle)崩溃

python - 在 Selenium 中将 PhantomJS 用于 headless 浏览器 - Python

python - 如何从同一个类的页面中的两个表中提取数据?

python - 带有 lxml 的 Xpath 返回空字符串,selenium 工作正常

java - Stripes 框架单元测试 : MockServletContext giving NullPointerException

java - Stackdriver Logback 附加程序停止应用程序

java - 在测试内运行时,WireMock 始终返回 Connection Refused

java - TestNG 中的并行执行