java - 使用 Webdriver 页面对象模型处理大量 WebElement 的断言

标签 java selenium junit pageobjects

我有一个页面,其中包含 50 个奇怪的 WebElement,我想断言这些 WebElement 具有正确的文本。我正在使用页面对象,因此测试与对象分开,并且测试是断言必须存在的位置。

我不想为每个元素设置 50 个单独的 @Test,因此我需要某种集合、列表或数组来保存文本值,然后对每个元素进行断言。但是,如果一个文本值错误,我不希望测试失败(一种可能的情况是页面经常更新并包含 50 个值)。这指向每个断言的单独@Test?

所以我需要为 PageObject 中的每个元素执行 driver.findElement(By.....)。

然后,我需要使用 .getText()) 将 WebElement 的值作为字符串传递给测试类,最好是在一种方法中。

我需要断言测试类中 50 个值中每一个的文本都是正确的,最好在一个 @Test 下,但如果有一个值不正确,则测试不会失败。

我已经为此苦苦思索了几个小时,如果这不清楚,我很抱歉,并对大段文字表示歉意;我是一个初学者 - 如果我能澄清请询问。显然我缺少一种通用的方法。

谢谢

最佳答案

如果您使用的是 JUnit 4.0+,则可以使用 parameterized tests .

  • 带注释的测试类@RunWith(Parameterized.class)
  • 带注释的静态方法@Parameters(返回嵌套的参数数组)
  • 类中的测试将为每组参数运行一次

上面 wiki 链接的示例:

@RunWith(Parameterized.class)
public class FibonacciTest {
    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][] {

                 { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 },{ 6, 8 }  
           });
    }

    private int fInput;

    private int fExpected;

    public FibonacciTest(int input, int expected) {
        fInput= input;
        fExpected= expected;
    }

    @Test
    public void test() {
        assertEquals(fExpected, Fibonacci.compute(fInput));
    }
}

关于java - 使用 Webdriver 页面对象模型处理大量 WebElement 的断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21288645/

相关文章:

java - 如何使用 Java 在 Selenium WebDriver 中按 "TAB"然后按 "ENTER"键?

Java 模拟 : How to Mock a generic class method in JMockit

java - 如何在没有 Mocking 框架的情况下测试调用另一个类中另一个方法的方法

java - 无法创建Java虚拟机

java - 如何在主包之外构建 JUnit 测试目录?

java - Bootstrap Popover 的 Selenium ElementNotVisibleException

selenium - 如何执行Xpath循环?

java - 创建 View 时如何在 Liquibase 中指定列名?

具有默认值的类的java数组

java - 关于 "+"运算符及其 StringBuilder 实现