[JAVA] Chrome59 Comparaison du fonctionnement en mode normal et sans tête

Il semble que Chrome 59 soit sorti vers le 05/06/2017. Je pense qu'il y a beaucoup de gens qui l'attendaient avec impatience car cette version prend en charge le mode sans tête. Cependant, la dernière version du pilote Chrome Driver 2.29 ne prend en charge que jusqu'à Chrome 58, vous devez donc attendre un moment. Cependant, il peut être déplacé dans une certaine mesure, il est donc possible d'être préparé.

Comment fonctionner en mode sans tête

Normalement (mode sans tête), la combinaison de Chrome59 + ChromeDriver2.29 semble fonctionner sans problème.

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

WebDriver driver = new ChromeDriver();
driver.get("http://qiita.com/");

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("/path/to/screenshot.png "));

driver.quit();

Ensuite, ajoutez des paramètres Chrome en vous référant à «Headless Chrome Beginning».

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

//Paramètre Chrome "--headless --disable-désignation gpu "
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless", "--disable-gpu");

// WebDriver driver = new ChromeDriver();
WebDriver driver = new ChromeDriver(options);
driver.get("http://qiita.com/");

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("/path/to/screenshot.png "));

driver.quit();

Si vous faites cela, vous pouvez prendre des captures d'écran même dans un environnement sans écran.

Comparaison du fonctionnement actuel

C'est peut-être juste mon environnement Linux, mais je peux voir des différences de comportement que je ne comprends pas bien. Il semble préférable de l'utiliser avec prudence jusqu'à ce qu'il se stabilise.

Les paramètres proxy ne fonctionnent pas

Si vous utilisez un proxy différent des paramètres du système d'exploitation, les paramètres de Chrome

-–proxy-server="http=xxx.xxx.xxx.xxx:8080;https=xxx.xxx.xxx.xxx:8080"
--proxy-bypass-list="local-test-server"

Il doit être spécifié comme, mais si vous l'ajoutez en mode sans tête

python


WebDriver driver = new ChromeDriver(options);

Cela s'arrêtera.

Impossible d'accéder au site avec un problème de certificat

Lorsque j'essaie d'accéder à un site comportant un triangle rouge sur le côté gauche de l'URL

python


driver.get(url);

Cela s'arrêtera à. Il n'y a pas de changement même si j'ajoute le paramètre Chrome --ignore-certificate-errors.

Le processus de changement de fenêtre ne fonctionne pas

Pour les sites impliquant plusieurs fenêtres

python


driver.switchTo().window(windowId);

Je le change comme ça, mais il ne change pas même après avoir attendu quelques minutes.

Recommended Posts

Chrome59 Comparaison du fonctionnement en mode normal et sans tête
Comparaison d'Android Handler Looper et de runOnUiThread
À propos du fonctionnement de next () et nextLine ()
Comparaison approfondie des implémentations Android et iOS
[Java / Swift] Comparaison de l'interface Java et du protocole Swift
[Java] Comparaison des méthodes d'opération de la collection et de StringBuilder
Comparaison des objets JavaScript et des classes Ruby
Comparaison équivalente de la classe wrapper Java et du type primitif