Java Selenium DevTools v127JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java Selenium DevTools v127

Сообщение Anonymous »

В настоящий момент я работаю в Java над веб-скребком с селеном и хочу добавить код JavaScript перед загрузкой любого веб-сайта, чтобы можно было переопределить некоторые методы... Я хотел использовать DevTools, но, к сожалению, у меня нет эффекта addScriptToEvaluateOnNewDocument... Но этот код каким-то образом работает, поэтому я предполагаю, что зависимости DevTools верны.

Код: Выделить всё

devTools.send(Emulation.setDeviceMetricsOverride(
500,  // width
600,  // height
50,   // deviceScaleFactor
true,  // mobile
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty()
));
Полный тестовый код:

Код: Выделить всё

String driverpath = Main.configuration.getString("browser.chromedriver");
String browserpath = Main.configuration.getString("browser.chromebrowser");

if(driverpath != null && !driverpath.isBlank()){
System.setProperty(
"webdriver.chrome.driver",
driverpath
);
System.setProperty(
"webdriver.gecko.driver",
driverpath
);
}

ChromeOptions options = new ChromeOptions();

if(headless){
Main.printf("Chrome headless");
options.addArguments("--headless");
}
options.addArguments("--disable-search-engine-choice-screen");
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("start-maximized"); // open Browser in maximized mode
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--no-sandbox"); // Bypass OS security model
if(browserpath != null && !browserpath.isBlank()){
options.setBinary(browserpath);
}

Main.printf("Start Chromedriver...");
this.driver = new ChromeDriver(options);

DevTools devTools = ((HasDevTools) driver).getDevTools();

devTools.createSession();

devTools.send(Emulation.setDeviceMetricsOverride(
500,  // width
600,  // height
50,   // deviceScaleFactor
true,  // mobile
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty(),
Optional.empty()
));

String script = "window.was_here=true; console.log('Script executed');";

ScriptIdentifier identifier = devTools
.send(Page.addScriptToEvaluateOnNewDocument(script, // source
Optional.empty(), // worldName
Optional.of(false), // includeCommandLineAPI
Optional.of(false) // runImmediately
));
System.err.println(String.format(
"Method Page.addScriptToEvaluateOnNewDocument result: %s", identifier));

driver.navigate().to("https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html");
try {
Thread.sleep(100); // nur zum Test, für sichtbare Effekte
} catch (InterruptedException e) {
e.printStackTrace();
}

Object d = getJSExecutor().executeScript("return window.was_here");
if(d != null){
boolean data = (Boolean) d;
Main.printf("Scraper", "DATA:"+(data ? "T" : "F"));
}else Main.printf("Scraper", "D IS NULL!!");

devTools.send(Page.removeScriptToEvaluateOnNewDocument(identifier));

try {
Thread.sleep(500000);  // nur zum Test, für sichtbare Effekte
} catch (InterruptedException e) {
e.printStackTrace();
}

driver.quit();
System.exit(0);

Main.printf("Chromedriver started :)");
Зависимости Maven Selenium:
  • selenium-java:4.25.0
  • selenium-devtools-v127:4.25.0
Браузер Chrome: GoogleChromePortable64_127.0.6533.120_online

Chrome Драйвер: v127 (https://datatoolbar.com/downloads/Drivers/chrome.127/)
Может ли кто-нибудь сказать мне, почему мой тестовый код не работает, я скопировал тест из этот проект

Подробнее здесь: https://stackoverflow.com/questions/791 ... tools-v127
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»