meg*_*ces 3 java selenium webdriver selenium-webdriver
我想知道是否有办法在运行自动Selenium测试时捕获页面上的JavaScript错误.
有日志 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)
有一个对我有用。这里是。
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)