以一个选择企业页面为例,假设事先并不知道用户登录后会有几个企业供选择,但是case又需要遍历各个企业,保证各个企业均可正常被访问,那么就可以用红色标记的方式处理。
public class ChooseEnterprise {
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
System.setProperty("webdriver.ie.driver", "C:\\Program Files (x86)\\Internet Explorer\\IEDriverServer.exe");
driver = new InternetExplorerDriver();
baseUrl = "http://xx.xxx.cn/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testChooseEnterprise() throws Exception {
int i = 1;
int j = 1;
String str = "";
String strLast = "";
//因为不知道需要打开的链接一共有多少个,所以使用while循环,始终给一个真值,直到条件满足跳出循环
while(i!=0){
driver.get(baseUrl + "xx/xx/login.jsp");
//判断是否成功进入登录页面
try {
assertEquals("使用手机帐号登录", driver.findElement(By.cssSelector("span.fontred2")).getText());
} catch (Error e) {
verificationErrors.append(e.toString());
}
driver.findElement(By.id("usersPhone")).clear();
driver.findElement(By.id("usersPhone")).sendKeys("13800000000");
driver.findElement(By.id("usersPassword")).clear();
driver.findElement(By.id("usersPassword")).sendKeys("123456");
driver.findElement(By.cssSelector("img")).click();
//判断是否到达选择企业页面
try {
assertEquals("选择企业", driver.findElement(By.xpath("//h3")).getText());
} catch (Error e) {
verificationErrors.append(e.toString());
}
//获取属性为class=qy_bg的div元素的值
str = driver.findElement(By.xpath("(//div[@class=‘qy_bg‘])["+i+"]")).getText();
//获取属性为class=qy_bg的div最后一个元素的值
strLast = driver.findElement(By.xpath("(//div[@class=‘qy_bg‘])[last()]")).getText();
driver.findElement(By.xpath("(//a[contains(text(),‘"+str+"‘)])")).click();
//判断是否进入各企业主页
try {
assertEquals(str, driver.findElement(By.xpath("//p[2]")).getText());
} catch (Error e) {
verificationErrors.append(e.toString());
}
//点击进入个人中心的图标,进行退出操作
driver.findElement(By.cssSelector("div.r_sz > a > img")).click();
//检查是否了进入个人中心
try {
assertEquals("个人中心", driver.getTitle());
} catch (Error e) {
verificationErrors.append(e.toString());
}
//点击退出
driver.findElement(By.linkText("退 出")).click();
//检查是否成功退出
try {
assertEquals("欢迎登录网信", driver.findElement(By.cssSelector("p.fontred")).getText());
} catch (Error e) {
verificationErrors.append(e.toString());
}
//j可以统计出一共有多少个企业,供测试结果输出使用
j = i;
System.out.println(j);
System.out.println(str);
//当str的值等于strLast,表示已经到达最后一个链接,此时可跳出循环
if(strLast.equalsIgnoreCase(str)){
break;
}
i++;
}
}
@After
public void tearDown() throws Exception {
driver.quit();
}
}