“天街小雨润如酥,草色遥看近却无。最是一年春好处,绝胜烟柳满皇都。”读一首古诗,心情也随之平静下来

Selenium WebDriver在不知道元素个数的情况下,完成页面所有元素的遍历

上一篇 / 下一篇  2013-10-14 16:50:56 / 天气: 晴朗 / 心情: 高兴 / 个人分类:测试实践

以一个选择企业页面为例,假设事先并不知道用户登录后会有几个企业供选择,但是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();
}
}


TAG:

 

评分:0

我来说两句

Open Toolbar