为每个功能创建一个独立的模块,将不同的功能独立开,尽量与其它的 case 隔离开,这样其它的 case 就不会被不同的 setup,teardown 方法影响,例如:创建 SearchPage.java。通过 Junit5 的参数化注解来帮我们实现数据的构造。
依赖导入
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.4.2</version>
<scope>test</scope>
</dependency>
@ParameterizedTest
@MethodSource("byNameGetPrice")
public void priceTest(String name, String code, double price){
driver.findElement(By.id("com.xueqiu.android:id/home_search")).click();
driver.findElement(By.id("com.xueqiu.android:id/search_input_text")).sendKeys(name);
driver.findElement(By.xpath("//*[@text='" + code + "'")).click();
System.out.println(driver.findElement(By.xpath("//*[@text='" + code + "']/../../..//*[@resource-id='com.xueqiu.android:id/current_price']")).getText());
String realPrice = driver.findElement(By.xpath("//*[@text='\" + code + \"']/../../..//*[@resource-id='com.xueqiu.android:id/current_price']")).getText();
driver.findElement(By.id("com.xueqiu.android:id/aciton_close")).click();
assertThat(parseDouble(realPrice), greaterThan(price));
}
private static Stream<Arguments> byNameGetPrice(){
return Stream.of(Arguments.of("alibaba", "", 210d),
Arguments.of("wangyi", "NTES", 250d),
Arguments.of("baidu", "BAIDU", 180d),
Arguments.of("google", "GOOGL", 200d)
);
}