Cucumber BDD 场景 - 如何编写“当用户单击按钮时”的 BDD 场景背后的 java 函数

问题描述 投票:0回答:1

请告诉我我的英语是否清楚。 另外,如果之前有人问过这个问题,我深表歉意,但根据我的研究,我无法找到答案。

我有一个 HTML 前端页面,上面有各种按钮(不同的应用程序名称)。它的工作方式应该是,当用户单击一个按钮时,它将转到另一个页面,并对该页面进行屏幕截图并保存到某个位置。我已经完成了这个加载页面和屏幕截图/保存功能的java代码和BDD,

我需要帮助的部分是按钮单击触发器,即 当用户单击按钮 A 或 B 或 C 时(以上逻辑)

因为前端有多个按钮,我如何在BDD场景后面编写java函数来检查用户单击了哪个按钮,以便它重定向到适当的页面(使用场景大纲中的示例)

以下是我想要实现的目标,但我对任何替代方案持开放态度。

@When user clicks on {string} then webdriverAgent opens {url}$  

public boolean checkifbuttonisclicked(String xpath, String url) throws exception {

// if (driver.findElement(By.xpath(xpath)).Click()) {

//}

if (driver.findElement(By.xpath(xpath)).isSelected()) {

    TakeaScreenshotofDesktop(app, yr); //separate function responsible for the screenshot

 }

}

所以基本上,

Scenario Outline:
Load HTML Page (with multiple buttons)
When user clicks on <button> 
Open <url>

Examples
button | url
App1 | https://stackoverflow.com |
App2 | https://google.com |
java selenium-webdriver cucumber bdd gherkin
1个回答
0
投票

看来你让事情变得比需要的更复杂了。

在 HTML 前端页面上,为每个所需的应用程序/URL 创建一个输入,例如

<form action="https://stackoverflow.com">
    <input type="submit" value="App1" />
</form>
<form action="https://google.com">
    <input type="submit" value="App2" />
</form>

这样,当您单击按钮时,它就会导航到所需的 URL。

现在对于 Java 方法,您传入应用程序名称,例如“App1”,然后单击具有该值的相应 INPUT。

public void ClickApp(String appName) {
    driver.findElement(By.cssSelector("input[value='" + appName + "']")).click();
}

当您这样做时,您不必传入 URL...它位于页面的 HTML 中。

© www.soinside.com 2019 - 2024. All rights reserved.