java - 重新启动 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?所以我可以重新连接到当前打开的浏览器吗?
一个了不起的人可以编辑我的代码来做我需要的事情吗?谢谢你,我感谢社区。
解决方案
如果您使用的是 Chrome,则可以将新会话附加到打开的浏览器窗口。你必须做的在这里描述:
基本上:
- 使用参数 chrome --remote-debugging-port= 运行 Chrome
- 添加 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)
推荐阅读
- flutter - 如何在颤动中知道以前的路线名称?
- python - 如何使用 pickle 模块更新记录?
- android - Gradle:compileOnly 和 runtimeOnly
- ios - 如何更改 Flutter 中的 ios 模拟器?
- laravel - 如何使用 laravel 6 配置 AdminLTE 3 javascript 链接?
- php - 如何在 PHP 中制作不同的 JSON 结构
- kotlin - 为什么 Swagger 不检测可选的 JSON 属性?
- visual-studio - 如何在 Visual Studio Code 中的 HTML 预览中显示视频和音频
- javascript - 无法使用 Chrome 的选择器结果选择元素
- python - 使用 BeautifulSoup 从表格中的特定单元格中提取数据?