我正在嘗試使用 Java Selenium WebDriver 捕獲網頁的所有 javascripts 錯誤。
這是我的代碼示例:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogType;
public class MainExample {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "path_to_driver/geckodriver");
FirefoxOptions options = new FirefoxOptions();
WebDriver driver = new FirefoxDriver(options);
driver.get("https://www.google.com");
LogEntries entries = driver.manage().logs().get(LogType.BROWSER);
}
}
作為 Firefox 驅動程式,我使用的是這個版本:geckodriver-v0.30.0-linux64.tar.gz
這是我的硒版本:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.1.1</version>
</dependency>
我的問題是,在運行以前的代碼時,我得到以下例外:
驅動程式資訊:driver.version:RemoteWebDriver at org.openqa.selenium.json.JsonInput.peek(JsonInput.java:122) at org.openqa.selenium.json.JsonTypeCoercer.lambda$null$6(JsonTypeCoercer.java:140) at org.openqa.selenium.json.Json.toType(Json.java:69) 在 org.openqa.selenium.json.Json.toType( Json.java:55) 在 org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:87) 在 org.openqa 的 org.openqa.selenium.json.Json.toType(Json.java:50) .selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) 在 org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) 在 org.openqa.selenium.remote.service.DriverCommandExecutor.execute (DriverCommandExecutor.java:83) 在 org.openqa.selenium.remote。RemoteWebDriver.execute(RemoteWebDriver.java:552) at org.openqa.selenium.remote.RemoteExecuteMethod.execute(RemoteExecuteMethod.java:35) at org.openqa.selenium.remote.RemoteLogs.getRemoteEntries(RemoteLogs.java:81) at org .openqa.selenium.remote.RemoteLogs.get(RemoteLogs.java:77) 在 MainExample.main(MainExample.java:17)
如果我在有一些 Java 腳本錯誤的自定義頁面上運行代碼,我會在日志中看到它們:
JavaScript 錯誤:http://localhost/js/app.js?version=625f9736,第 1 行:TypeError:e 未定義
但我無法使用
driver.manage().logs().get(LogType.BROWSER);
我已經嘗試過這個相關主題的不同代碼,但我每次都收到這個錯誤。
我也嘗試將我的 selenium 版本降級到 3.141.59,但我仍然遇到同樣的錯誤。
uj5u.com熱心網友回復:
使用 WebDriver 日志端點(不支持)
W3C WebDriver 還沒有定義 get-logs 端點。
https://www.w3.org/TR/webdriver/#endpoints
這仍然打開:
https://github.com/w3c/webdriver/issues/406
因此,不幸的driver.manage().logs()是,Firefox 并未實作。
來自 geckodriver 團隊:
目前這不在 W3C 規范中,因此我們將延遲支持,直到明確指定行為為止。但您的要求已被注明。
看
(2016) https://bugzilla.mozilla.org/show_bug.cgi?id=1453962
(2016) https://github.com/mozilla/geckodriver/issues/284
(2018) https://github.com/mozilla/geckodriver/issues/1292
使用 DevTools(似乎作業)
我能夠看到控制臺輸出selenium-4.1.1和devtools.v85
package org.example.getlogs
import org.openqa.selenium.WebDriver
import org.openqa.selenium.devtools.DevTools
import org.openqa.selenium.devtools.v85.log.Log
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.firefox.FirefoxOptions
class GetLogsTest {
public static void main(String[] args) {
FirefoxOptions options = new FirefoxOptions();
WebDriver driver = new FirefoxDriver(options);
DevTools devTools = driver.getDevTools();
devTools.createSession();
devTools.send(Log.enable());
devTools.addListener(Log.entryAdded(),
logEntry -> {
System.out.println("" logEntry.getLevel() ": " logEntry.getText());
});
driver.get("https://stackoverflow.com/questions/70787924/how-to-capture-java-script-errors-using-selenium-java-webdriver");
driver.quit();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/420620.html
標籤:
上一篇:ElementNotInteractableException:訊息:使用Selenium和Python將文本發送到輸入欄位的鍵盤錯誤無法訪問元素
