Измените настройки chrome (настройка PDF-документов), используя java selenium - PullRequest
1 голос
/ 07 апреля 2020

Раньше я мог нажимать кнопку и загружать PDF-файл, а затем я мог его прочитать. Однако теперь PDF открывается в браузере, что затрудняет его чтение, потому что я получаю 401. Я заметил, что могу изменить настройки chrome так, чтобы PDF-документ загружался вместо открытия в браузере. В настройках chrome имеется переключатель («Документы PDF» - «Загружать файлы PDF вместо автоматического их открытия в Chrome»). Это можно найти в chrome://settings /.

Как я могу изменить его с помощью селена? Могу ли я использовать ChromeOptions? если да, то как?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Да, вы можете использовать ChromeOptions, чтобы изменить настройку загрузки PDF по умолчанию chrome, используя следующий код:

 HashMap<String, Object> chromePrefs = new HashMap<String, Object>();  
 chromePrefs.put("plugins.always_open_pdf_externally", true);  // Download PDF files instead of automatically opening them in Chrome
 ChromeOptions options = new ChromeOptions();  
 options.setExperimentalOption("prefs", chromePrefs);  

 DesiredCapabilities cap = new DesiredCapabilities();
 cap.setCapability(ChromeOptions.CAPABILITY, options);  

 System.setProperty("webdriver.chrome.driver", "driverpath\\chromedriver.exe");
 WebDriver driver = new ChromeDriver(options);
0 голосов
/ 08 апреля 2020

Selenium действительно может получить доступ к меню настроек chrome и изменять параметры по своему усмотрению. Это связано с тем, что параметр просто представляет собой HTML DOM, вы можете проверить это, нажав F12 и перейдя в раздел Elements. см. пример для примера.

Я использовал .elementToBeClickable() в своем коде ниже. Это идеально, так как вы хотите просто переключить кнопку. .until() возвращает ожидаемый элемент, так что вы можете просто добавить .click() в конце оператора.

driverChrome.manage().window().maximize();
driverChrome.get("chrome://settings");
WebElement w = driverChrome.findElement(By.xpath("//iframe[@name='settings']"));
driverChrome = driverChrome.switchTo().frame(w);

WebDriverWait wait = new WebDriverWait(driverChrome, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[text()='Show advanced settings...']"))).click();//****replace the text here

Как видите, я получаю доступ к настройкам chrome и в этом установите XPath на текст кнопки (вы можете изменить это, если хотите). Это щелкает / переключает элемент и в вашем случае будет устанавливать, открывать ли в chrome или загружать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...