我有一个 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 |
看来你让事情变得比需要的更复杂了。
在 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 中。您也不需要检查
.isSelected()
等,只需点击相应的按钮即可。