gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:35:46 25 4
gpt4 key购买 nike

我有一个页面,其中包含 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/

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