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