Sumimasen tard
Ceci est l'article du 7ème jour du Calendrier de l'Avent du navigateur Chromium 2017.
En reconfigurant mon test E2E, j'étais curieux de savoir comment utiliser le dernier Chrome Headless dans un environnement Java.
L'environnement est basé sur Mac, mais heureusement, Linux devrait fonctionner correctement.
L'article utilise la dernière version basée sur 2017/12. La dernière de la base d'aujourd'hui
est.
L'essentiel est que la version Java de ChromeWebDriver n'est plus prise en charge, du moins à ce stade, et avec le wrapper Selenide approprié pour votre langue, vous pouvez ignorer l'étape de téléchargement de chromedriver.
Créez un fichier build.gradle comme celui ci-dessous et mettez la bibliothèque Selenide (selenide.org) dans un état utilisable.
build.gradle
apply plugin: 'idea'
apply plugin: 'java'
repositories {
mavenCentral();
}
sourceCompatibility = targetCompatibility = 1.8
dependencies {
compile 'com.codeborne:selenide:4.9'
compile 'org.springframework.boot:spring-boot-starter-logging:1.5.9.RELEASE'
}
configurations.all {
exclude group: 'log4j'
exclude module: 'log4j-over-slf4j'
exclude module: 'slf4j-log4j12'
exclude module: 'slf4j-jdk14'
exclude module: 'commons-logging'
}
Comment lancer Chrome via Selenium, dans ce cas, mettez-le dans une variable statique avant de charger la page.
ChromeHeadlessApplication.java
package holdings.ozaki.matsudak;
import static com.codeborne.selenide.Selenide.open;
import static com.codeborne.selenide.Selenide.screenshot;
import org.slf4j.bridge.SLF4JBridgeHandler;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.WebDriverRunner;
public class ChromeHeadlessApplication {
static {
//Diffusez le journal vers Slf4j
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
//Utiliser ChromeDriver en mode sans tête
Configuration.browser = WebDriverRunner.CHROME;
Configuration.headless = true;
Configuration.reportsFolder = "build/reports";
Configuration.browserSize = "1024x768";
}
public static void main (final String...args) {
// google.Prenez une capture d'écran de com et terminez
open("https://google.com");
screenshot("google.com");
}
}
Tout d'abord, c'est un pilote qui devient un pont pour l'exécution de chrome, mais ʻio.github.bonigarcia.wdm.Downloader` le téléchargera pour ce qui suit.
log
2017-12-24 20:13:55 [main] INFO i.g.bonigarcia.wdm.BrowserManager - Reading https://chromedriver.storage.googleapis.com/ to seek [chromedriver]
2017-12-24 20:13:55 [main] INFO i.g.bonigarcia.wdm.BrowserManager - Latest version of [chromedriver] is 2.34
2017-12-24 20:13:55 [main] DEBUG io.github.bonigarcia.wdm.Downloader - Downloading https://chromedriver.storage.googleapis.com/2.34/chromedriver_mac64.zip to /Users/jp20217/.m2/repository/webdriver/chromedriver/mac64/2.34/chromedriver_mac64.zip
2017-12-24 20:13:56 [main] INFO i.g.bonigarcia.wdm.BrowserManager - Exporting webdriver.chrome.driver as /Users/matsudak/.m2/repository/webdriver/chromedriver/mac64/2.34/chromedriver
Si vous faites ps -A lors de l'exécution de l'instruction principale, vous pouvez voir que Chrome est démarré avec --headless
& --disable-gpu
.
ps -A
50321 ?? 0:00.30 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-gpu --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --force-fieldtri
als=SiteIsolationExtensions/Control --headless --ignore-certificate-errors --load-extension=/var/folders/wn/s9lbdlj56rd4bl2b6k54v_z80000gp/T/.org.chromium.Chromium.hg9Dpt/internal --log-level=0 --metrics-recording-only --no-first-run --no-sandbox --password-store=basic --remote-debugging-port=12986 --test-type=webdriver --use-mock-keychain --user-data-dir=/var/
folders/wn/s9lbdlj56rd4bl2b6k54v_z80000gp/T/.org.chromium.Chromium.76jzQ6 data:,
Étant donné que Chrome Headless ne peut pas être utilisé, PhantomJS, etc., il existe diverses restrictions, je pense donc qu'il existe de nombreux environnements dans lesquels Chrome a été lancé via xvid.
À partir de 2017, il semble que vous devriez utiliser Chrome Headless sans xvid.
Recommended Posts