码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-07-25 01:37:44      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

标签:

原文地址:http://www.cnblogs.com/whiue/p/4675100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!