gpt4 book ai didi

java - 如何检查 PageObject 的所有元素是否有效(Java、Serenity、Cucumber)

转载 作者:行者123 更新时间:2023-12-02 06:21:20 24 4
gpt4 key购买 nike

我正在用 cucumber 编写场景测试用例,我想在运行测试之前检查 PageObject 的所有元素是否有效以及 selenium 是否可以与它们交互。我想避免运行我的多步骤、长测试用例只是为了到达最后一页并得到未找到元素的异常。我希望能够在编写 PageObject 后对其进行测试,这样我就可以确定所有元素都是可访问的(在运行长时间测试之前..)。

我正在开发的网站没有一致的 id 标签,使用 @FindBy() 有时需要一些时间。我正在尝试制定一个简单的过程:

  1. 导航至 PageObject 网址
  2. 检查Selenium是否可以访问PageObject中的所有元素

您是否知道一种无需为每个元素创建方法即可访问所有 PageObjects 元素的方法?初始化所有元素的方法?

最佳答案

在尝试了多种不同的方法之后,我在类中使用反射来提取所有字段,然后使用 .isPresent(); 检查该元素是否在页面上。此解决方案要求将此方法放置在您要测试的每个类中,这是我试图避免的。

解决方案:

SuiteRunner

@RunWith(CucumberWithSerenity.class)
@CucumberOptions(features = "src/test/resources/features/checkElems")
public class RegressionTestSuite {}

功能文件:CanFindElems.feature

Feature: Check if WebPage Object elements can be found

Scenario: Check if the page's elements are reachable
Given navigate to webpage
Then check page elements

测试类

public class CanFindElemsTest {

// Change the class
ClassYouAreTesting page;

@Given("^navigate to webpage$")
public void navigate_to_webpage() throws Exception {

page.open();
}


@Then("^check page elements$")
public void check_page_elements() throws Exception {

page.checkPageElementsExist();
}
}

页面类

public class SomeWebPage extends PageObject {

@FindBy(id = "someID")
private WebElementFacade someElement;

@FindBy(linkText = "some text")
private WebElementFacade someLink;

@FindBy(className = "some-class")
private WebElementFacade anotherElement;


public void checkPageElementsExist() throws Exception {

Field[] allFields = getClass().getDeclaredFields();
for (Field field : allFields) {

if (field.get(this) instanceof WebElementFacade) {

WebElementFacade f = (WebElementFacade) field.get(this);

if (!f.isPresent()) {

System.out.println("ElementNotFound: " + field.getName());
} else {

System.out.println("Found: " + field.getName());
}
}
}
}

}

关于java - 如何检查 PageObject 的所有元素是否有效(Java、Serenity、Cucumber),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55831300/

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