我看过一个视频,可以在该视频中为诱人报告设置命名的定位器 获取视图$(locatorname)。单击-通过:
public class Named extends NamedBy {
private final By origin;
private String name;
public Named(By origin) {
this.origin = origin;
}
public Named as(String name) {
this.name = name;
}
@Override
public String toString() {
return Objects.nonNull(name) ? name : this.origin.toString();
}
@Override
public List<WebElement> findElements(SearchContext context) {
return new Named(By.id(id));
}
}
以及元素代码:
SelenideElement button = $(id("someid").**as("locatorName")**)
,然后应该可以使用此元素。
但是我不能。
我没有像尝试创建selenideElement时那样的方法。
请帮助。这样的报告更具可读性。
答案 0 :(得分:0)
您的示例似乎无效。至少方法as
必须返回this
。此外,覆盖的id
中的findElements
丢失。另外,还不清楚您为什么扩展NamedBy
而不是By
。
无论如何,那只是By
的包装。要在报告中查看这些定位符的名称,您必须先完成视频(事件监听器)中的上一个示例,然后再完成NamedBy
的实现。
P.S。为了使其与代码段中介绍的方式相同,您必须添加其他创建逻辑,例如:
public static NamedBy id(String locator) {
return new NamedBy(By.id(locator));
}