gpt4 book ai didi

java - Cucumber picocontainer/SharedDriver 无法正确处理浏览器实例

转载 作者:行者123 更新时间:2023-11-30 02:13:39 25 4
gpt4 key购买 nike

我正在使用 cucumber-jvm picocontainer 在类之间共享 selenium 驱动程序。我有 ShareDriver 和 WebDriverFactory 类。

我的问题如下:1.如果我运行 2 个测试用例,则驱动程序/浏览器实例在第一个测试用例后关闭,创建新的浏览器实例并运行第二个测试用例。我只想使用 1 个浏览器实例并运行测试,然后将其关闭。

  • 测试后任务管理器卡住了IEDriverServer.exe和一个java.exe,但是浏览器关闭了。我需要手动杀死它们。每次运行都会从这些任务中创建一个新任务。我尝试了 stackoverflow 上的所有想法,但都无法解决这个问题。
  • 谢谢!

    我的 SharedDriver 类:

    public class SharedDriver extends EventFiringWebDriver implements Startable {

    public SharedDriver() {
    super(WebDriverFactory.localInternetExplorerWebDriver());
    }

    @After
    public void embedScreenshot(Scenario scenario) {
    try {
    byte[] screenshot = getScreenshotAs(OutputType.BYTES);
    scenario.embed(screenshot, "image/png");
    } catch (WebDriverException somePlatformsDontSupportScreenshots) {
    System.err.println(somePlatformsDontSupportScreenshots.getMessage());
    }
    }

    @Override
    public void start() {

    }

    @Override
    public void stop() {
    quit();
    }
    }

    我的 WebDriverFactory 类:

    class WebDriverFactory {
    static {
    System.setProperty("webdriver.ie.driver", "src/test/resources/webDrivers/IEDriverServer.exe");
    }

    static WebDriver localInternetExplorerWebDriver() {
    DesiredCapabilities returnCapabilities = DesiredCapabilities.internetExplorer();
    System.setProperty("webdriver.ie.driver", "src/test/resources/webDrivers/IEDriverServer.exe");
    //returnCapabilities.setCapability("nativeEvents", false);
    returnCapabilities.setCapability("requireWindowFocus", true);
    returnCapabilities.setCapability(InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING, false);
    returnCapabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
    returnCapabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    returnCapabilities.setCapability("ignoreZoomSetting", true);
    return new InternetExplorerDriver(returnCapabilities);
    }
    }

    最佳答案

    SharedDriver 的实现不正确。你需要在shareddriver类中有一个静态的webdriver字段,创建一个关闭线程,将该线程添加到jvm关闭钩子(Hook)中。使用这个one

    如果你也想杀死它,请使用 this 。将其添加到关闭钩子(Hook)中。在调用 REAL_DRIVER.quit() 后将其添加到线程的 run 方法中。

    关于java - Cucumber picocontainer/SharedDriver 无法正确处理浏览器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49328239/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com