首页 > 解决方案 > 重新启动 Java 应用程序时重用 Selenium WebDriver 会话

问题描述

每次我重新启动我的 Java 应用程序。然后创建 ChromeDriver() 类的新实例。这又会启动一个新的 Chrome 浏览器。

我希望能够继续我离开的地方。因此,当我为给定的步骤或网页构建代码时。我的自动化序列中的众多之一。我可以编辑代码并重新启动。无需重新开始整个事情或序列。

这是我启动 Chrome 浏览器的基本 Java 实现,该浏览器已准备好进行自动化。

    package jack;
    import org.openqa.selenium.*;
    import org.openqa.selenium.chrome.*;
    
    public class JacksClass {
    
           WebDriver driver;
           
           public void launchBrowser() {
                  
                  // Set file path of chrome driver
                  System.setProperty("webdriver.chrome.driver",  "C:\\chromedriver.exe");
                  
                  // Create object
                  driver = new ChromeDriver();
                  
                  // Open our browser to this URL
                  driver.get("https://google.com");
                  
           }
           
           public static void main(String[] args) {
    
                  JacksClass obj = new JacksClass();
                  
                  obj.launchBrowser();
           
           }
    }

这可以通过保存会话 ID 来实现吗?然后在下次启动时重用该会话 ID?所以我可以重新连接到当前打开的浏览器吗?

一个了不起的人可以编辑我的代码来做我需要的事情吗?谢谢你,我感谢社区。

标签: javaseleniumselenium-webdriver

解决方案


如果您使用的是 Chrome,则可以将新会话附加到打开的浏览器窗口。你必须做的在这里描述:

https://medium.com/@harith.sankalpa/connect-selenium-driver-to-an-existing-chrome-browser-instance-41435b67affd

基本上:

  1. 使用参数 chrome --remote-debugging-port= 运行 Chrome
  2. 添加 ChromeOptions 参数 debuggerAddress
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress","localhost:<remote-port>");
ChromeDriver driver = new ChromeDriver(options);
``` (source - https://medium.com/@harith.sankalpa/connect-selenium-driver-to-an-existing-chrome-browser-instance-41435b67affd)

推荐阅读