webdriver入门
webdriver作为selenium新版本的插件,和selenium RC最大的不同在于其不需要启动服务,直接运行Java代码即可。
新建一个maven项目,pom文件的内容如下,这样就可以从selenium的官方下载webdriver所需要的包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Selenium2Test</groupId>
<artifactId>Selenium2Test</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.44.0</version>
</dependency>
<dependency>
<groupId>com.opera</groupId>
<artifactId>operadriver</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.opera</groupId>
<artifactId>operadriver</artifactId>
<version>0.16</version>
<exclusions>
<exclusion>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</dependencyManagement>
</project>
selenium webdriver调用Chrome的方法
首先下载一个chromedriver的驱动
下面的网站可以下载到各个版本Chrome对应的webdriver:http://chromedriver.storage.googleapis.com/2.37/notes.txt
selenium webdriver项目的建立前面已经讲过了,对于任何浏览器,都是一致的
需要保证chromedriver和Chrome版本的对应,如果二者版本不对应,可能会无法正常调起Chrome
实现如下
"//Chrome执行文件的路径
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
//Chrome的driver的路径,相对当前项目根路径的相对路径
ChromeDriverService service = new ChromeDriverService.Builder().usingDriverExecutable(new File("driver\\chromedriver2.37.exe"))
.usingAnyFreePort().build();
service.start();
// 初始化driver
WebDriver driver = new RemoteWebDriver(service.getUrl(),DesiredCapabilities.chrome());
//打开浏览器
driver.get(");
webdriver调用Firefoxpackage lesson1;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class ExampleForFireFox {
public static void main(String[] args) {
// 如果你的 FireFox 没有安装在默认目录,那么必须在程序中设置
System.setProperty("webdriver.firefox.bin",
"D:\\Program Files\\Mozilla Firefox\\firefox.exe");
// 创建一个 FireFox 的浏览器实例
WebDriver driver = new FirefoxDriver();
// 让浏览器访问 Baidu
driver.get("http://www.baidu.com");
// 用下面代码也可以实现
// driver.navigate().to("http://www.baidu.com");
// 获取 网页的 title
System.out.println("1 Page title is: " + driver.getTitle());
// 通过 id 找到 input 的 DOM
WebElement element = driver.findElement(By.id("kw"));
// 输入关键字
element.sendKeys("zTree");
// 显示搜索结果页面的 title
System.out.println("2 Page title is: " + driver.getTitle());
// 关闭浏览器
driver.quit();
}
}
webdriver同selenium RC一样,可以结合selenium IDE来使用,在Firefox中安装selenium IDE插件
在Firefox选择附加组件,搜索selenium IDE,选择下面的插件进行安装
安装完成后,就可以在组件列表和Firefox的工具栏中看到selenium IDE的图标了
使用IDE录制浏览器的操作,并将操作export为Junit4 的代码,就可以导入selenium webdriver所在的项目进行使用了
使用上面导出的代码时会遇到几个问题
首先,selenium webdriver中并没有Junit的jar包 ,这个比较容易解决,直接导入个Junit的jar即可,这里我引入的是Junit 4.11版本的jar
之后又遇到一个问题,这个类里面引入了一个包,import static org.hamcrest.CoreMatchers.*; 但是这个包在这个类中未使用,本想着把import去掉即可,结果去掉之后出现了一个报错,说少这个包,之后求 助了百度,说是Junit新版本的jar里面没有包含hamcrest的包,但是实际上这个jar在Junit测试时是必备的,那就只能再引入这个包了,果然,在引入了hamcrest-core-1.3.jar这个包之后,代码不会报错了
再次执行,提示找不到Firefox的安装文件,本来看了参考的一些教程说Firefox如果安装在默认目录(D:\Program Files\Mozilla Firefox)就可以不用配置了,但是我这里虽然是默认安装目录,结果还是不能找到,那么就只有加上配置指定Firefox的目录了
System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");
经过上面的调整,代码已经能够正常执行并调起Firefox了
来自 <http://lxw198902165221.blog.163.com/blog/static/25895002220171233850323/>