维护和重用现有的 webdriver 浏览器实例 - java

2024-04-04

基本上每次我从 eclipse 运行 java 代码时,webdriver 都会启动一个新的 ie 浏览器并在大部分情况下成功执行我的测试。然而,我有很多测试要运行,而且 webdriver 每次都会启动一个新的浏览器会话,这很痛苦。我需要一种方法来重新使用以前打开的浏览器;所以 webdriver 会第一次打开 ie,然后第二次,我运行我的 eclipse 程序,我希望它简单地选择以前的浏览器实例并继续在同一个实例上运行我的测试。这样,我就不会在每次运行程序时启动新的浏览器会话。

假设您有 100 个测试要在 Eclipse 中运行,您点击运行按钮,它们都会运行,然后在大约第 87 个测试时您会收到错误。然后您返回 eclipse,修复该错误,但随后您必须从头开始重新运行所有 100 个测试。

最好修复第 87 个测试的错误,然后从第 87 个测试恢复执行,而不是从头开始重新执行所有测试,即从测试 0 一直到测试 100。 希望我足够清楚,能够从你们那里得到一些帮助,谢谢顺便说一句。

下面是我尝试维护和重用 webdriver Internet Explorer 浏览器实例的尝试:

public class demo extends RemoteWebDriver { 

    public static WebDriver driver;
    public Selenium selenium;
    public WebDriverWait wait;
    public String propertyFile;
    String getSessionId;


    public demo() { // constructor


        DesiredCapabilities ieCapabilities = DesiredCapabilities
                .internetExplorer();
        ieCapabilities
                .setCapability(
                        InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
                        true);
        driver = new InternetExplorerDriver(ieCapabilities);


        this.saveSessionIdToSomeStorage(getSessionId);
        this.startSession(ieCapabilities);
        driver.manage().window().maximize();
    }

    @Override
      protected void startSession(Capabilities desiredCapabilities) {
        String sid = getPreviousSessionIdFromSomeStorage();
        if (sid != null) {
          setSessionId(sid);
          try {
            getCurrentUrl();
          } catch (WebDriverException e) {
            // session is not valid
            sid = null;
          }
        }
        if (sid == null) {
          super.startSession(desiredCapabilities);
          saveSessionIdToSomeStorage(getSessionId().toString());
        }
      }

    private void saveSessionIdToSomeStorage(String session) {
        session=((RemoteWebDriver) driver).getSessionId().toString();
    }

    private String getPreviousSessionIdFromSomeStorage() {
        return getSessionId;
    }
}


我希望通过重写remoteWebdriver中的startSession()方法,它会以某种方式检查我是否已经在ie中打开了一个webdriver浏览器实例,并且它会使用该实例,而不是每次我点击时重新创建一个新实例Eclipse 中的“运行”按钮。

我还可以看到,因为我正在从构造函数创建一个“新驱动程序实例”,因为构造函数总是首先执行,所以它会自动创建该新驱动程序实例,所以我可能需要以某种方式更改它,但不知道如何更改。

我是 stackoverflow 和 selenium webdriver 的新手,希望这里有人可以提供帮助。

Thanks!


回答你的问题:

不可以。您无法使用计算机上当前运行的浏览器。但是,您可以使用相同的浏览器进行不同的测试,只要它在同一执行中即可。

然而,听起来您真正的问题是一遍又一遍地运行 100 个测试。我建议使用测试框架(如 TestNG 或 JUnit)。通过这些,您可以指定要运行哪些测试(TestNG 将生成所有失败测试的 XML 文件,因此当您运行它时,它只会执行失败的测试)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

维护和重用现有的 webdriver 浏览器实例 - java 的相关文章

随机推荐