Serenity bdd 在serenity中的可执行操作内调用可重用/实用方法

Serenity bdd 在serenity中的可执行操作内调用可重用/实用方法,serenity-bdd,cucumber-serenity,Serenity Bdd,Cucumber Serenity,我们定义了一个上传文件的void实用程序方法。现在尝试在Actions类中的Serenity Screenplay模式中将其用作可执行的动作,但是它不允许调用void实用程序方法。 很抱歉,如果问到基本问题,我们正在探索《宁静》的剧本,并坚持这一点 实用程序: public static void DropFile(File filePath, WebElement target, int offsetX, int offsetY) { WebDriver driver = Sereni

我们定义了一个上传文件的void实用程序方法。现在尝试在Actions类中的Serenity Screenplay模式中将其用作可执行的动作,但是它不允许调用void实用程序方法。 很抱歉,如果问到基本问题,我们正在探索《宁静》的剧本,并坚持这一点

实用程序:

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
.......
}
.功能文件:

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, 0));

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

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

    public static Consumer<Actor> DropFile(File filePath, WebElement target, int offsetX, int offsetY) {
        WebDriver driver = Serenity.getDriver();
        driver = ((RemoteWebElement)target).getWrappedDriver();
        JavascriptExecutor jse = (JavascriptExecutor)driver;
    XXXXXXXX
    .......
return ??
    }
publicstaticconsumerdropfile(文件路径、WebElement目标、intoffsetx、intoffsety){
WebDriver=Serenity.getDriver();
驱动程序=((RemoteWebElement)目标).getWrappedDriver();
JavascriptExecutor jse=(JavascriptExecutor)驱动程序;
XXXXXXXX
.......
返回??
}