当前位置: 首页 > 知识库问答 >
问题:

在测试前用@guice在TestNG@中注入WebDrivers

花烨
2023-03-14

我是配置硒的新手。寻找路过的司机找到此解决方案https://stackoverflow.com/a/35101914/7104440我想知道是否有可能以这种方式从浏览器中注入许多驱动程序。是否可以绑定不同的驱动程序?我收到错误代码

encom.google.inject.CreationException: Unable to create injector, see the following errors:

1)不允许绑定到null实例。如果这是您的预期行为,请使用Providers.of(null))。在assecobs.driver.DriverModule.configure(DriverModule.java:31)

2) 与org.openqa.selenium的绑定。WebDriver已在assecobs.driver.DriverModule.configure(DriverModule.java:31)中配置。位于assecobs.driver.DriverModule.configure(DriverModule.java:31)

DriverModule.class

private DriverSetup driverSetup = new DriverSetup();

@BeforeSuite
@Override
public void configure(Binder binder) {

    for (BrowserNames browserName : BrowserNames.values()) {
        System.out.println(" bind " + browserName.toString());
        WebDriver driver = driverSetup.initDriver(browserName.toString());
        binder.bind(WebDriver.class).toInstance(driver);
    }
}
}

驱动程序设置.class

 @SneakyThrows
public WebDriver initDriver(String browser) {
    if (browser.equalsIgnoreCase("chrome")) {
        capabilities = chromeCapabilities();
        driver = initChromeDriver(capabilities);

    } else if (browser.equalsIgnoreCase("firefox")) {
        capabilities = firefoxCapabilities();
        driver = initFirefoxDriver(capabilities);

    } else if (browser.equalsIgnoreCase("opera")) {
        capabilities = operaCapabilities();
        driver = initOperaDriver(capabilities);

    } else {
            capabilities = firefoxCapabilities();
            return driver = initFirefoxDriver(capabilities);
        }

        return driver;
    }

客户端测试.class

@Guice(modules = {DriverModule.class})
public class ClientTest extends DriverSetup {

@Inject
WebDriver driver;

共有1个答案

易成双
2023-03-14

我已经使用Guice WebDriver一段时间了。您可以注入 Web 驱动程序,如 ClientTest.java 所示。

查看此处了解详细步骤。- http://www.testautomationguru.com/selenium-webdriver-dependency-injection-using-guice/

 类似资料:
  • 我正在尝试为一个类编写测试,该类具有从属性文件注入的字段值。我试图在运行TestNG测试时利用注释获取其中的值,但它似乎忽略了我的属性文件。 有几十个类似的问题,我试着仔细阅读,并尽可能尝试它们的实现。但我的问题似乎略有不同,原因如下: > @TestProperty tSource和@Property tySource不适用于JUnit:谈论JUnit而不是TestNG(可能相关,也可能不相关?

  • 我用TestNG类创建了一个Maven项目。在TestNG。xml我已经给出了套件的名称。我使用了多个浏览器Chrome和Firefox来并行运行。仅使用setup类和一个以上的类就可以了,但是当我使用注释包含多个类时,我会得到一个注入错误,并给出一个错误。 我将提供我尝试过的代码 设置。JAVA 我得到的错误如下: 无法使用[class org.openqa.selenium.remote.De

  • 问题内容: 每当我想测试使用资源注入的类时,我最终都会包含一个仅在测试中使用的构造函数: 还有另一种模拟资源注入的方式,或者这是遵循的正确模式吗? 问题答案: 您可以使用简单的光泽效果,它可以模拟EJB注入系统。 另一种方法是在测试中使用反射来设置字段,我有时使用类似这样的内容:

  • 我想在使用guice实例化子类时,将依赖项注入父类。在下面的示例中,我试图创建的一个实例,同时希望能够在运行时使用Guice注入。我该怎么做?

  • 我上了如下的课,效果很好 现在,我没有直接使用EmpService,而是创建了一个接口,EmpService实现了该接口,如下所示。 所以现在我的资源类必须使用接口,但我不确定如何引用它必须使用的实现。 我看到了这个,我不确定我的绑定应该去哪里。(这是我第一个与Guice相关的项目,所以我是一个完全的新手)。 这就是“未绑定com.api.EmpService的实现”出现的错误这完全可以理解,但不

  • 问题内容: 如果测试失败,我想截图。与其将所有测试方法都包裹在try / catch块中,不如将这种逻辑添加到以标记的方法中。 如何在当前测试失败的注解方法中进行检测? 问题答案: 如果带有注释的方法具有参数,则TestNG将自动注入测试结果。(来源:TestNG文档,第5.18.1节) 这应该做的工作: