selenium 2.0 java 接口简介
2013-06-09 09:54
423 查看
Selenium是一个用于Web应用程序测试的工具。Selenium直接运行在浏览器中,就像真正的用户在操作一样。
Selenium2.0 java的一个简单示例如下:
WebDriver driver = new FirefoxDriver(); //启动firefox浏览器
driver.manage().window().maximize(); //最大化浏览器
driver.get(“http://www.sina.com.cn”); //访问一个页面
System.out.println(driver.getPageSource()); //打印页面源码
driver.quit(); //退出浏览器
get方法访问一个页面,当调用get方法时,WebDriver会一直阻塞直到该页面完全加载完成。若一个页面加载速度过慢,则会导致get方法一直阻塞,因此有时候需要对get方法设定一个超时时间,当加载超时时停止加载。设定超时的方法有两种,第一种是用selenium提供的页面加载超时方法,如:
driver.manage().timeouts().pageLoadTimeout(1, TimeUnit.SECONDS);
try {
driver.get("http://www.sina.com.cn");
driver.quit();
} catch (TimeoutException e) {
driver.quit();
}
当超时时,任何关于driver的操作都会被阻塞,只有driver.quit()会立即关闭浏览器,销毁浏览器对应的资源。pageloadTimeout方法只适用于firefox浏览器,Chrome等其他浏览器并不适用,但我们可以自己实现一个定时器,如:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
driver.quit();
}
}, 1000);
driver.get("http://www.sina.com.cn");
timer.cancel();
一些web应用程序有许多Frames或多个Windows。 WebDriver支持使用“switchTo”的方法实现的窗口之间切换。以下示例展示了如何关闭除主窗口之外的其它窗口:
String parentWindowHandle = driver.getWindowHandle();
Iterator windowIterator = driver.getWindowHandles().iterator();
while (windowIterator.hasNext()) {
String windowHandle = windowIterator.next();
if (!windowHandle.equals(parentWindowHandle)) {
driver.switchTo().window(windowHandle);
driver.close();
}
}
driver.switchTo().window(parentWindowHandle);
有的Web应用程序会弹出窗口,也可以通过switchTo在主窗口和弹出窗口之间切换,如:
Alert alert = driver.switchTo().alert();
alert.accept();
若要定位网络中的UI元素,可以通过findElement及findElements的方法,第一个方法返回一个WebElement或者抛出异常。后者返回所有WebElement的列表,或者空列表。获取和定位元素一般调用By方法,包括By
ID、 By Class Name、By
Tag Name、By Name、By Link Text、By
Partial Link Text、By CSS以及By XPATH等。例:
WebElement element = driver.findElement(By.xpath("//input[@id="form_submit"]";
查找元素时,也可以设定超时,比较方便地方法是全局设定,如:
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
当查找到的元素时IFrame时,则可和Windows之间可以进行切换,如:
driver.switchTo().frame(element);
当查找到的元素可点击时(比如按钮、单选框、多选框、链接等),则可调用click方法进行点击,如:
element.click();
一般,调用click方法,点击发生在元素的中间位置,若想点击元素的其它地方,可以调用moveToElement的方法,如:
(new Actions(driver)).moveToElement(element, 20, 20).click().perform();
一些可点击的元素点击后,可能会跳到一个新的页面,通过windows的切换可获取到新页面的url及title,如:
element.click();
String parentWindowHandle = driver.getWindowHandle();
Iterator windowIterator = driver.getWindowHandles().iterator();
while (windowIterator.hasNext()) {
String windowHandle = windowIterator.next();
if (!windowHandle.equals(parentWindowHandle)) {
driver.switchTo().window(windowHandle);
break;
}
}
System.out.println(driver.getCurrentUrl());
System.out.println(driver.getTitle());
在Firefox中,页面发生切换后,立即通过getCurrentUrl获取新页面url可能会返回"about:blank",过段时间再通过getCurrentUrl时,才能返回正确的url,介于此,修改getCurrentUrl方法如下:
String getCurrentUrl() {
String url = "";
int maxRetry = 10;
url = driver.getCurrentUrl();
while (url.trim().equalsIgnoreCase("about:blank") && maxRetry > 0)
{
Thread.sleep(1000);
url = driver.getCurrentUrl();
maxRetry--;
}
return url;
}
Selenium2.0 java的一个简单示例如下:
WebDriver driver = new FirefoxDriver(); //启动firefox浏览器
driver.manage().window().maximize(); //最大化浏览器
driver.get(“http://www.sina.com.cn”); //访问一个页面
System.out.println(driver.getPageSource()); //打印页面源码
driver.quit(); //退出浏览器
get方法访问一个页面,当调用get方法时,WebDriver会一直阻塞直到该页面完全加载完成。若一个页面加载速度过慢,则会导致get方法一直阻塞,因此有时候需要对get方法设定一个超时时间,当加载超时时停止加载。设定超时的方法有两种,第一种是用selenium提供的页面加载超时方法,如:
driver.manage().timeouts().pageLoadTimeout(1, TimeUnit.SECONDS);
try {
driver.get("http://www.sina.com.cn");
driver.quit();
} catch (TimeoutException e) {
driver.quit();
}
当超时时,任何关于driver的操作都会被阻塞,只有driver.quit()会立即关闭浏览器,销毁浏览器对应的资源。pageloadTimeout方法只适用于firefox浏览器,Chrome等其他浏览器并不适用,但我们可以自己实现一个定时器,如:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
driver.quit();
}
}, 1000);
driver.get("http://www.sina.com.cn");
timer.cancel();
一些web应用程序有许多Frames或多个Windows。 WebDriver支持使用“switchTo”的方法实现的窗口之间切换。以下示例展示了如何关闭除主窗口之外的其它窗口:
String parentWindowHandle = driver.getWindowHandle();
Iterator windowIterator = driver.getWindowHandles().iterator();
while (windowIterator.hasNext()) {
String windowHandle = windowIterator.next();
if (!windowHandle.equals(parentWindowHandle)) {
driver.switchTo().window(windowHandle);
driver.close();
}
}
driver.switchTo().window(parentWindowHandle);
有的Web应用程序会弹出窗口,也可以通过switchTo在主窗口和弹出窗口之间切换,如:
Alert alert = driver.switchTo().alert();
alert.accept();
若要定位网络中的UI元素,可以通过findElement及findElements的方法,第一个方法返回一个WebElement或者抛出异常。后者返回所有WebElement的列表,或者空列表。获取和定位元素一般调用By方法,包括By
ID、 By Class Name、By
Tag Name、By Name、By Link Text、By
Partial Link Text、By CSS以及By XPATH等。例:
WebElement element = driver.findElement(By.xpath("//input[@id="form_submit"]";
查找元素时,也可以设定超时,比较方便地方法是全局设定,如:
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
当查找到的元素时IFrame时,则可和Windows之间可以进行切换,如:
driver.switchTo().frame(element);
当查找到的元素可点击时(比如按钮、单选框、多选框、链接等),则可调用click方法进行点击,如:
element.click();
一般,调用click方法,点击发生在元素的中间位置,若想点击元素的其它地方,可以调用moveToElement的方法,如:
(new Actions(driver)).moveToElement(element, 20, 20).click().perform();
一些可点击的元素点击后,可能会跳到一个新的页面,通过windows的切换可获取到新页面的url及title,如:
element.click();
String parentWindowHandle = driver.getWindowHandle();
Iterator windowIterator = driver.getWindowHandles().iterator();
while (windowIterator.hasNext()) {
String windowHandle = windowIterator.next();
if (!windowHandle.equals(parentWindowHandle)) {
driver.switchTo().window(windowHandle);
break;
}
}
System.out.println(driver.getCurrentUrl());
System.out.println(driver.getTitle());
在Firefox中,页面发生切换后,立即通过getCurrentUrl获取新页面url可能会返回"about:blank",过段时间再通过getCurrentUrl时,才能返回正确的url,介于此,修改getCurrentUrl方法如下:
String getCurrentUrl() {
String url = "";
int maxRetry = 10;
url = driver.getCurrentUrl();
while (url.trim().equalsIgnoreCase("about:blank") && maxRetry > 0)
{
Thread.sleep(1000);
url = driver.getCurrentUrl();
maxRetry--;
}
return url;
}
相关文章推荐
- java集合中的Iterable接口的简介与运用
- Java中List接口用法简介
- selenium2.0+java窗口切换函数
- Java 开发 2.0: Kilim 简介
- Selenium2.0功能测试之Alert/Confirm/Prompt的处理(Java版)
- Java 开发 2.0: Kilim 简介
- JNDI(Java 命名和目录接口)(二)--JDBC2.0扩展API
- Java Pet Store 2.0 应用程序简介
- 在百度BAE2.0 JAVA环境下搭建属于自己的微信公众平台接口
- selenium2.0的初步封装(java版本)
- Retrofit2.0-Java(Android) 的REST 接口封装类库
- 转:Selenium Grid+JAVA +Windows 配置(Selenium 2.0)
- JNI 接口 简介 与 示例 java 调用 c++
- java接口简介
- Selenium2.0 java接口简介
- selenium2java通过请求接口获取并向浏览器插入cookies
- Selenium2.0 WebDriver功能测试入门(Java版)
- Selenium2.0功能测试之访问站点及获取页面信息(Java版) 【转】
- 【selenium 2.0 python 自动化测试】简介及前期准备
- Java 开发 2.0: Kilim 简介