如果另一个 chrome 实例处于打开状态,Selenium chromedriver 将不会启动 URL



我尝试使用Selenium weDriver加载chrome profile。配置文件加载正常,但在尝试加载 URL 时失败。

我注意到当有另一个 chrome 实例打开时,无论它是否由 webDriver 打开时,都会发生此问题。我有硒 2.53.1。

System.setProperty("webdriver.chrome.driver","C:\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/Users/useName/AppData/Local/Google/Chrome/User Data");
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);
driver.get("www.google.com") // here is where it fails. It works fine if I close all chrome browsers before I run the test

我找到了解决此问题的方法。我注意到发生此问题是因为如果有另一个打开的实例使用相同的配置文件,chromedriver 将无法使用相同的配置文件启动。例如,如果 chrome.exe 已使用默认配置文件打开,则 chromedriver.exe 将无法启动默认配置文件,因为 chrome.exe 已打开并使用相同的配置文件。

要解决此问题,您需要通过复制默认配置文件来创建单独的自动化配置文件.exe以便 chromedriver 和 chrome.exe 不共享相同的默认配置文件。

默认的镶边配置文件位于以下位置:

C:\Users\yourUserName\AppData\Local\Google\Chrome\User Data\

将所有文件从用户数据文件夹复制到新文件夹,并将其称为自动化配置文件

将文件复制到新文件夹后,您可以将其用于脚本。

        String userProfile= "C:\Users\YourUserName\AppData\Local\Google\Chrome\AutomationProfile\";
        ChromeOptions options = new ChromeOptions();
        options.addArguments("user-data-dir="+userProfile);
        options.addArguments("--start-maximized");
        driver = new ChromeDriver(options);

确保在测试结束时使用 driver.quit(),这样你就不会保持 chromedriver.exe 打开

我添加了ChromeOption"no-sandbox",它似乎可以帮助我解决类似的问题。请注意,这会改变您的浏览安全性。这里有一个链接可以解释更多:https://www.google.com/googlebooks/chrome/med_26.html

var options = new ChromeOptions();
//I had more options added, but this is the example of the argument I referred to
options.AddArgument("no-sandbox");

最新更新