如何为魅力报告设置命名定位器?

How To set named locators for allure report?

我看过一个视频,其中可以为魅力报告设置命名定位器 获取视图 $(locatorname).click - passed:

有代码:

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 时的方法。

请帮忙。这样的报告更易读。

视频URL:https://youtu.be/d5gjK6hZHE4?t=1300

您的示例似乎无效。至少,一个方法 as 必须 return this。此外,覆盖的 findElements 中的 id 丢失了。另外,还不清楚为什么要扩展 NamedBy 而不是 By.

无论如何,这只是 By 的包装。要在报告中查看这些定位器的名称,您必须在完成 NamedBy 实施之前首先遵循视频中的先前示例(事件侦听器)。

P.S。要使其与代码片段中引入的方式相同,您必须添加额外的创建逻辑,例如:

public static NamedBy id(String locator) {
    return new NamedBy(By.id(locator));
}