javascript - 这段 JS 代码的正确 Java 等价物是什么?
问题描述
在某处看到用 JS 中的 1 行编写的相同代码后,我试图减少使用 Java 中的 Lambda 表达式的代码行。但我收到以下错误:
不兼容的类型。必需:org.openqa.selenium.logging.LogEntries 找到:无效
这就是我现在所拥有的。
List e =driver.manage().logs().get(LogType.BROWSER).getAll();
String s="",t ="";
if (!e.isEmpty()){
for (Object l : e)
{
t=l.toString();
if(t.contains("SyntaxError")){
s = s + t+"<BR/>";
}
else if(t.contains("EvalError")){
s = s + t+"<BR/>";
}
else if(t.contains("ReferenceError")){
s = s + t+"<BR/>";
}
else if(t.contains("RangeError")){
s = s + t+"<BR/>";
}
else if(t.contains("TypeError")){
s = s + t+"<BR/>";
}
else if(t.contains("URIError")){
s = s + t+"<BR/>";
}
}
这就是我想要达到的目标:
List<String > errorStrings = new ArrayList<>();
errorStrings.add("SyntaxError");
errorStrings.add("EvalError");
errorStrings.add("ReferenceError");
errorStrings.add("RangeError");
errorStrings.add("TypeError");
errorStrings.add("URIError");
LogEntries l = driver.manage().logs().get(LogType.BROWSER).forEach(le -> errorStrings.stream().anyMatch(er -> le.getMessage().contains(er)));
按照这行代码写的是JS:
var jsErrors = Driver.Manage().Logs.GetLog(LogType.Browser).Where(x => errorStrings.Any(e => x.Message.Contains(e)));
请帮助我了解我做错了什么。
-TIA
解决方案
你的代码是
LogEntries l = driver.manage().logs().get(LogType.BROWSER)
.forEach(le -> errorStrings.stream()
.anyMatch(er -> le.getMessage().contains(er)));
你的错误信息是
Incompatible types. Required: org.openqa.selenium.logging.LogEntries Found: void
错误消息告诉您,您的赋值语句期望您返回 aLogEntries
但它得到的是void
. 它得到 avoid
因为那是Stream.forEach
方法的返回类型。该forEach
方法用于消耗流的所有元素并且不返回任何内容。
我认为您要做的是过滤一组日志条目并将它们变成一个LogEntries
对象,对吗?如果是这种情况,我怀疑你想要filter
而不是forEach
.
我不是硒专家,所以我不能建议你如何打开Stream<LogEntry> into a
LogEntries`。我假设您可以使用 reduce 或 collect 操作,但最好将其作为一个单独的问题提出。
推荐阅读
- api - 在 React Native 中将数据发布到 API 仅显示为空
- node-red - 如何在 Node-Red 中将多条消息合并为一条消息?
- jmeter - 在 JMeter 中参数化为 csv 文件 url
- excel - 如何删除 ws.name
- npm - 运行 npm install 时未处理的“错误”事件
- sql - SQL Server - 有没有办法在没有备份的情况下恢复损坏的数据库?
- linux - 如何从 SSL 密码列表的配置文件访问 Perl 中的变量
- paperjs - 如何更改 Paper.js 中的默认单位?
- sql - 在变量 plsql 中获取逗号分隔的 ID
- eclipse - 两个不同版本的 perl 产生不同的结果是否正常?