如何使用Java使用Selenium WebDriver捕获JavaScript错误

meg*_*ces 3 java selenium webdriver selenium-webdriver

我想知道是否有办法在运行自动Selenium测试时捕获页面上的JavaScript错误.

Guy*_*Guy 7

日志 Beta版本WebDriver

driver.manage().logs().get(LogType.BROWSER);
Run Code Online (Sandbox Code Playgroud)

会给你控制台内容.

然后你可以使用Level过滤它

LogEntries entries = driver.manage().logs().get(LogType.BROWSER);
entries.filter(Level.SEVERE);
Run Code Online (Sandbox Code Playgroud)


meg*_*ces 2

有一个对我有用。这里是。

    public boolean isThereJSErrorOnThePage() {
    Set<String> errorStrings = new HashSet<>();
    errorStrings.add("SyntaxError");
    errorStrings.add("EvalError");
    errorStrings.add("ReferenceError");
    errorStrings.add("RangeError");
    errorStrings.add("TypeError");
    errorStrings.add("URIError");
    LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
    for (LogEntry logEntry : logEntries) {
        for (String errorString : errorStrings) {
            if (logEntry.getMessage().contains(errorString)) {
                LOGGER.error("Java Script error has been detected:");
                LOGGER.error(new Date(logEntry.getTimestamp()) + " " + logEntry.getLevel() + " " + logEntry.getMessage());
                return true;
            }
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

如果它不能开箱即用,请尝试添加功能:

DesiredCapabilities desiredCapabilities = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.BROWSER, Level.ALL);
desiredCapabilities.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
driver = new ChromeDriver(desiredCapabilities);
Run Code Online (Sandbox Code Playgroud)