Selenium chromedriver не будет запускать URL, если открыт другой экземпляр Chrome

Я попытался загрузить профиль Chrome с помощью селена weDriver. Профиль загружается нормально, но не удается, когда он пытается загрузить 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

2 ответа

Я нашел решение этой проблемы. Я заметил, что эта проблема возникает, потому что chromedriver не сможет запускаться с тем же профилем, если есть другой открытый экземпляр, использующий тот же профиль. Например, если chrome.exe уже открыт с профилем по умолчанию, chromedriver.exe не сможет запустить профиль по умолчанию, поскольку chrome.exe уже открыт и использует тот же профиль.

Чтобы исправить это, вам нужно будет создать отдельный профиль для автоматизации, скопировав профиль по умолчанию, чтобы chromedriver.exe и chrome.exe не использовали один и тот же профиль по умолчанию.

Профиль Chrome по умолчанию находится в этом месте:

C: \ Users \ Ваше имя пользователя \AppData\Local\Google\Chrome\ Данные пользователя \

Скопируйте все файлы из папки User Data в новую папку и назовите ее AutomationProfile.

После того, как вы скопируете файлы в новую папку, вы можете использовать их для своих скриптов.

        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 «без песочницы», и, похоже, он помог мне с аналогичной проблемой. Знайте, что это меняет степень безопасности вашего просмотра. Вот ссылка, которая объясняет это подробнее: 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");
Другие вопросы по тегам