您的位置:首页 > 其它

Selenium2(WebDriver)总结(五)---元素操作进阶(常用类)

2015-04-05 21:29 525 查看
1、Alert类

Alert是指windows弹窗的一些操作,需要new一个Alert类

driver.switchTo().alert():切换到alert窗口

alert.getText():取得弹窗上面的字符串

alert.accept():点击确定/ok类的按钮,使弹窗消失

alert.dismiss():取消

public void testAlert(){
WebElement element = driver.findElement(By.className("alert"));
element.click();
Alert alert = driver.switchTo().alert();
String text = alert.getText();
alert.accept();
//alert.dismiss();
System.out.println(text);
}


使用Actions类

先要new一个Actions的类对象

最后的perform()一定要加上,否则执行不成功

public void testAlertByActions(){
WebElement element = driver.findElement(By.className("alert"));
Actions action = new Actions(driver);
action.click(element).perform();
Alert alert = driver.switchTo().alert();
String text = alert.getText();
alert.accept();
//alert.dismiss();
System.out.println(text);
}


2、Action类

先要new一个Actions的类对象

最后的perform()一定要加上,否则执行不成功

public void testActions(){
WebElement element = driver.findElement(By.className("over"));
Actions action = new Actions(driver);
action.moveToElement(element).perform();
String text = driver.findElement(By.id("over")).getText();
System.out.println(text);
}


3、调用JS

一般用来执行一段JS,来改变HTML

一些非标准控件无法用selenium2的API时,可以执行JS的办法来取代

executeScript这个方法的参数为字符串,为一段JS代码

public void testJS(){
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("alert('helloworld')");
}


4、Wait机制及实现

在规定的时间内只要符合条件即返回,下面的代码中是只要isDisplayed即返回

public void testWait(){
WebElement waitButton = driver.findElement(By.id("wait"));
waitButton.click();
boolean flag = new WebDriverWait(driver, 10).until
(
new ExpectedCondition<Boolean>()
{
public Boolean apply(WebDriver driver)
{
return driver.findElement(By.className("red")).isDisplayed();
}
}
);
if(flag){
String text = driver.findElement(By.className("red")).getText();
System.out.println(text);
}
}


5、Iframe操作

如果iframe标签有能够唯一确定的id或者name,就可以直接用id或者name的值:driver.switchTo().frame("aa");

如果iframe标签没有id或者name,但能够通过页面上确定其是第几个(也就是通过index来定位iframe,index是从0开始的):driver.switchTo().frame(0);

还可以通过xpath的方式来定位iframe,写法如下:
WebElement iframe = driver.findElement(By.xpath("//iframe[@name='aa']"));

driver.switchTo().frame(iframe);

public void testIFrame(){
driver.findElement(By.id("user")).sendKeys("test");
driver.switchTo().frame("aa");
driver.findElement(By.id("user")).sendKeys("iframe test");
driver.switchTo().defaultContent();//返回顶层frame
driver.findElement(By.id("user")).sendKeys("---new test");
}


6、多窗口切换

gettWindowHandles:取得driver所打开的所有的页面的句柄

witchTo是指切换到相应的窗口中去,window中的参数是指要切过去的窗口的句柄

public void testMultiWindow(){
driver.findElement(By.id("user")).sendKeys("test");
String handle = driver.getWindowHandle();//获取当前窗口的句柄
System.out.println(handle);
WebElement element = driver.findElement(By.className("open"));
element.click();
Set<String> handles = driver.getWindowHandles();
for(String s : handles)
{
if(!s.equals(handle))
{
System.out.println(s);
driver.switchTo().window(s);
driver.findElement(By.id("kw")).sendKeys("glen");
}
}

driver.switchTo().window(handle);
driver.findElement(By.id("user")).sendKeys("---new test");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: