在宁静的可执行操作中调用可重用/实用方法

问题描述

我们定义了一种用于上传文件的 void 实用方法。现在尝试在 Actions 类的 Serenity Screenplay 模式中使用它作为可执行的操作,但是它不允许调用 void 实用程序方法。 抱歉,如果问到基本问题,我们正在探索 Serenity Screenplay 并坚持这一点。

实用性:

public static void DropFile(File filePath,WebElement target,int offsetX,int offsetY) {
    WebDriver driver = Serenity.getDriver();
    driver = ((RemoteWebElement)target).getWrappedDriver();
    JavascriptExecutor jse = (JavascriptExecutor)driver;
XXXXXXXX
.......
}

.feature 文件

When user uploads a file

步骤定义文件

@When("{actor} uploads a file")
public void user_uploads_excel(Actor actor) throws InterruptedException {
    
actor.wasAbleto(UploadPage.Upload());
}

动作类:

public static Performable Upload() {
WebDriver driver = Serenity.getDriver();
    WebElement uploadElement = driver.findElement(By.xpath("//*[@id='upload']"));
    
    return Task.**where**("test",DropFile(new File("C:\\xx\\v.xlsx"),uploadElement,0));

}

在这里,会在“where”处得到一个错误提示“将 DropFile 的返回类型更改为 Consumer,如果将 DropFile 的返回类型更改为 Consumer,则了解 DropFile 的返回值应该是什么。

如果更改如下实用程序以实现建议的返回类型:

    public static Consumer<Actor> DropFile(File filePath,int offsetY) {
        WebDriver driver = Serenity.getDriver();
        driver = ((RemoteWebElement)target).getWrappedDriver();
        JavascriptExecutor jse = (JavascriptExecutor)driver;
    XXXXXXXX
    .......
return ??
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)