启蒙部分:
1. selenium 是什么?
Selenium是一个用于Web应用程序测试的工具,测试直接运行在浏览器中,如同用户在操作一样.
Selenium是一套工具,可以跨多个平台自动化浏览器.运行在许多浏览器和操作系统上.
2. selenium 能干什么?
代替手工, 进行频繁的回归测试, 重复性的测试, 快速生成海量的测试数据
轻松实现, 几乎无限次的测试用例迭代
可以支持, 敏捷和极限开发方法
更具需要, 定制的缺陷报告
3. selenium 怎么使用?
支持的语言, Java / Python / JavaScript / 等.
支持的系统, Windows / MAC / Linux
支持浏览器, IE / Chrome / Firefox / Safari / Opera / HtmlUnit / phantomjs /
Android (with Selendroid or appium) / iOS (with ios-driver or appium)
一句话, 就是可以进行自动化相关的测试, 可以进行单元测试,接口测试,功能测试.
4. selenium自动化测试的核心?
webdriver 是selenium进行GUI 功能测试的核心.
WebDriver用“驱动”(driver)去控制不同的浏览器.
WebDriver与“驱动”(driver)间用JSON协议进行通信.
WebDriver还有一个移动驱动叫做Appium,它允许测试代码在移动设备和平板上运行
本质上Selenium是一个生态系统,我们可以进行本地桌面,本地移动设备,跨平台测试,
我们不需要使用Windows,Mac或是Linux操作系统。
我们可以选择自己项目团队最合适的编程语言。
我们可以并行或远程执行我们的测试。
所有需要做的就是学习如何使用WebDriver。
5. WebDriver干什么?
WebDriver是一个自动化浏览器的工具.
WebDriver可是使浏览器自动化.
WebDriver可以为我们打开URL与渲染出的页面进行交互:
新建一个浏览器实例 , 在浏览器中打开一个URL , 点击页面上的链接 ,
在字段中输入信息, 在页面中执行JavaScript , 实现模拟人工进行业务功能操作.
WebDriver不是一个测试REST APIs、SOAP APIs或数据库的工具。
因为WebDriver本质上是一个库,
我们可以将其与其他库一起使用,调用其他API或者对数据库进行操作。
通常WebDriver与其他库一起使用,访问数据库检查结果,
使用REST库进行API调用,然后在WebDriver页面上检查结果.
使用库而不是框架提供了更多的灵活性来实现自动化.
最后: selenium自动化主要就是通过webdriver提供的一套API实现web功能的自动化测试.
理论部分一:
在使用selenium webdriver进行元素定位时,
通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.
WebDriver元素的常用8种定位方式:
driver.findElement(By.id("kw"));
driver.findElement(By.name("wd"));
driver.findElement(By.className("xxx"));
driver.findElement(By.tagName("input "));
driver.findElement(By.xpath("xxx"));
driver.findElement(By.linkText("xxx"));
driver.findElement(By.partialLinkText("xxx"));
driver.findElement(By.cssSelector("xxx"));
最后再总结一下,各种方式在选择的时候应该怎么选择:
id定位,精准简单高效/
name定位,className定位,tagName定位, 定位一组元素可以使用;
name定位,className定位,tagName定位, 定位单个元素, 需要检测是否唯一.
linkText定位, 即通过超文本链接上的文字信息来定位元素. 需要检测是否唯一.
partialLinkText定位, 当你不能准确知道超链接的完整文本信息, 可以使用部分文本信息进行定位.
xpath定位,cssSelector定位, 非常强大的元素查找方式,几乎可以定位到页面上的任意元素.
1. 当页面元素有id属性时,最好尽量用id来定位。如果没有可以选择其他定位方法。
2. xpath很强悍,但定位性能不是很好。少用但可以选择xpath或cssSelector。
3. 当要定位一组元素相同元素时,可以考虑用tagName或name。
4. 当有链接需要定位时,可以考虑linkText或partialLinkText方式。
绝对路径以单/号表示,而下面要讲的相对路径则以//表示,这个区别非常重要
一定要学好xpath定位的手写方式,
一定要学好xpath定位的手写方式,
一定要学好xpath定位的手写方式.
理论部分二:
运行Selenium 3所需的最低Java版本是Java 8+
不支持PhantomJS,建议使用无头Firefox或者而不是Chrome.
各种浏览器的启动完整代码
启动火狐浏览器示例代码:
public static void StartFireFoxByDefault(){
WebDriver driver;
System.out.println("start firefox browser...");
System.setProperty("webdriver.gecko.driver", "src\main\resources\driver\geckodriver55.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.baidu.com/");
System.out.println("start firefox browser succeed...");
}
启动谷歌浏览器示例代码:
public static void StartChromeByDefault(){
System.out.println("start firefox browser...");
System.setProperty("webdriver.chrome.driver", "\src\main\resources\driver\chromedriver63.exe");//驱动路径
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.baidu.com/");
System.out.println("start firefox browser succeed...");
}
测试准备阶段: 以windows系统,chrome浏览器,java语言来进行示例.
1. 下载需要使用到的webdriver文件, 在我的其他文章中有下载地址
2. 下载JDK1.8+, 我使用的selenium3.X版本, 最低支持JDK1.8版本.
3. 配置jdk的环境变量,
系统环境变量JAVA_HOME:D:\Java\jdk1.8.0_05(写自己安装的jdk地址)
系统环境变量Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
系统变量CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
检验是否配置成功 运行cmd 输入 java -version (java 和 -version 之间有空格)
4. 下载安装eclipse, 从eclipse官网下载,https://www.eclipse.org/downloads/
5. 下载安装maven,从apache官网下载,https://maven.apache.org/
配置 maven 环境变量:
系统变量:MAVEN_HOME = F:\apache-maven-3.5.0;
系统变量path追加: %MAVEN_HOME%\bin;
打开 cmd,在里面敲:mvn -version
6. eclipse中配置maven,
windows-->preference-->maven--->installations--->add--->maven安装目录-->勾选--apply.
7. 如果安装的是Intel IDEA, 自带maven, 无需安装.
8. selenium等相关的依赖的jar包, 都可在maven repository 仓库中,搜索添加到pom.xml文件中.
实战阶段