当前位置: 首页 > 面试题库 >

维护和重复使用现有的WebDriver浏览器实例-Java

应向晨
2023-03-14
问题内容

基本上,每次我从eclipse运行Java代码时,webdriver都会启动一个新的浏览器并成功地执行我的测试。但是,我有很多测试需要运行,并且每次Webdriver都要启动一个新的浏览器会话是一件很痛苦的事情。我需要一种方法来重新使用以前打开的浏览器;因此,webdriver将在第一次运行时打开,然后在第二次运行时运行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浏览器实例,并且它将代替每次创建新实例来使用该实例。蚀中的“运行”按钮。

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

我是Stackoverflow和Selenium Webdriver的新手,希望这里有人可以提供帮助。

谢谢!


问题答案:

要回答您的问题:

不可以。您不能使用计算机上当前正在运行的浏览器。但是,只要它在同一执行上,就可以对不同的测试使用相同的浏览器。

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



 类似资料:
  • 我是新加入这个董事会的,但我已经读过你很多年了。:) 我正试着学编码,但我还在第一步。然而,我将使用一个脚本来检测用户的浏览器。 这适用于所有主要的浏览器(我在chrome、firefox和IE上试用过),但它不适用Edge。我该怎么修好它?谢谢!

  • 我目前正在尝试使用Selenium WebDriver(JAVA)2.53和Firefox 43.0执行TOR 6.0.4。我已经按照这篇文章的说明使用Selenium WebDriver和Tor,但在将Tor的profilePath加载到Firefox二进制文件时,我遇到了一个错误。我已经看到可以通过加载TOR配置文件来访问TOR。firefox二进制文件的默认存档,但我得到了一个驱动程序信息:

  • 本文向大家介绍使用wxpython实现的一个简单图片浏览器实例,包括了使用wxpython实现的一个简单图片浏览器实例的使用技巧和注意事项,需要的朋友参考一下 上次我爬了n多图片,但是浏览的时候有一个问题。 图片浏览器的浏览一般都是按名称排的,而我对图片的命名是按照数字递增的。比如3总是会排在10后面,也就无法快速地浏览图片了。 所以,出于方便自己查阅图片,也出于学习,决定做一个自己的图片浏览器。

  • 本文向大家介绍Android实现图片浏览器示例,包括了Android实现图片浏览器示例的使用技巧和注意事项,需要的朋友参考一下 本文所述为一个基础的Android图片浏览器代码,是仿写Google原版实现的,代码中实现了主要的实现过程和方法,具体的完善还需要自己添加,代码中有很多注释,可帮助新手们快速理解代码,使用了部分图像资源。 主要功能代码如下: 本文所述仅为其主要功能代码部分,读者可以对其进

  • 需要指导和帮助在下面一个。 当下面的代码执行时,我得到了错误。我使用的是最新版本的java、eclipse、火狐和WebDrive jar文件。 错误 线程"main"java.lang.IllegalStateExcture中的异常:驱动程序可执行文件的路径必须由webdriver.gecko.driver系统属性设置;有关详细信息,请参阅https://github.com/mozilla/g