gpt4 book ai didi

java - 如何创建接受参数并验证页面对象的页面标题的通用 cucumber 步骤

转载 作者:行者123 更新时间:2023-12-02 01:26:37 24 4
gpt4 key购买 nike

我想在我的 cucumber 测试点击指向不同页面的链接后验证后续页面。

我想验证网页上的链接。我的 cucumber 测试正在解析所有链接并导航到每个链接。我想创建一个通用的 cucumber 步骤,它将接受一些参数,通过这些参数我将验证是否打开了正确的页面。

到目前为止,我创建了一个通用的 Cucumber 步骤,它接受页面标题字符串,通过该字符串我验证导航是否指向正确的页面。

我的 cucumber 测试:

Scenario Outline: As a not registered User I can visit "<page>"
When user looks at the webpage
And user clicks on "<link>"
Then user is navigated to "<page>"
Examples:
| link | page
| How to register | Registration page
| Questions & Answers | Login FAQ's
| Register Now | Create account
| Forgot your name or password? | Reset Password

我的步骤如下所示:

@Then("^user is navigated to \"([^\"]*)\"$")
public void userIsNavigatedTo(final String pageHeading) throws IOException {
switch (pageHeading) {
case "Registration page":
Assert.assertTrue(
howToRegisterPage.getPageHeading().getText()
.equalsIgnoreCase(pageHeading)
);
break;
case "Login FAQ's":
Assert.assertTrue(
questionsAndAnswersPage.getPageHeading().getText()
.equalsIgnoreCase(pageHeading)
);
break;
//.....//
}

这个开关对我来说看起来很糟糕,而且,我知道很快它就会变得太长而难以阅读和维护。

附注我所有的 PageObject 都是 Spring Bean,可以自动连接到 StepDefinition 类中,但我不知道如何制作我的“userIsNavigateTo”通用,我需要作为参数传递什么,以及如何为每次迭代获取正确的 PageObject。

最佳答案

为了避免 switch-case,您可以创建 Map<String, YourPageObject>将页面标题映射到页面对象。

public class StepDefinition{
private final Map<String, YourPageObject> pageObjectsIndex;

@Autowired
public StepDefinition(List<YourPageObject> yourPageObjects){
pageObjectsIndex = yourPageObjects.stream().collect(Collectors.toMap(page -> page.getPageHeading().getText().toUpper(), Function.identity());
}

@Then("^user is navigated to \"([^\"]*)\"$")
public void userIsNavigatedTo(final String pageHeading) throws IOException {
Assert.assertTrue(pageObjectsIndex.get(pageHeading.toUpper()).isLoaded());
}
}

这些想法的副作用是每个页面都需要有自己的类来实现 YourPageObject 接口(interface)。我写了“副作用”,因为我不确定它是缺点还是优点(可能取决于情况;))。

关于java - 如何创建接受参数并验证页面对象的页面标题的通用 cucumber 步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56809090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com