Selenium 自动化测试之道--学习总结-WebDriver(一)

最近正在看Ping++测试团队编著的《Selenium 自动化测试之道》,非常非常好的一本书,不仅仅是工具的介绍使用,还有非常珍贵的实践总结,自己的公司也在做自动化,由于是基于B/S,要考虑到硬件环境,而且主要使用的是RobotFramework去构建自动化脚本验证系统的可靠性。

之前自己也学习过关于Selenium的知识,但是总感觉知识很零散,自己在网上搜了很长时间,买了这本书,发现自己还欠缺很多,很庆幸能读到这本书,下面开始一点点的搭建自己的知识框架。

一、工作原理

Selenium Webdriver是调用浏览器的原生接口(浏览器原生API就是浏览器设计时内置的接口,除了原生接口还有浏览器通用或某浏览器兼容的接口

)来操作浏览器的。Selenium 2.0将浏览器原生的API封装成WebDriver API,在脚本中创建Webdriver对象,再通过这个对象调用Webdriver API来访问浏览器接口,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的), 所以就像真正的用户在操作一样。

在测试脚本中使用Selenium Webdriver ,无论哪种浏览器,处理逻辑都是通过一个ComandExecutor发送命令,实际上就是一条发送给Web Service(Web Service是基于特定WebDriver Wire协议的RESTful接口,测试脚本通知浏览器要做的操作都包含于发送给Web Service的HTTP请求体中)的HTTP 请求。

Selenium HttpCommandExecutor类的代码维护了一个 nameToUrl = ImmutableMap.<String,CommandInfo>builder()的函数,它将简单的命令转化为相应的请求URL,请求基于sessionID的,在多线程并行的时候不会发生冲突和干扰。

二、环境搭建(基于JAVA)(版本没有冲突就可以,注意32位还是64位)

1.JDK

2.eclipse

3.浏览器Chromestable_54.0.2840.99.exe(没有直达链接,FQ找),Firefox,IE,safari

4.浏览器Driver,与浏览器版本一致,放到环境变量路径可达的目录下

5.测试环境(某网站)

6.Selenium工具jar包selenium-server-standalone-2.53.0.jar,打开eclipse ---> 把jar文件复制到项目中创建一个文件夹,右键点击项目名--->properties--->java build path---->Libraries--->add --->选择jar文件

7.代码管理工具apache-maven,apache-maven-3.0.5.rar直接解压到D:\program files(自己创建一个目录)下面,

   配置环境变量:新建变量名 M2_HOME  变量值 D:\Program files\apache-maven

                              修改变量path 变量值 %M2_HOME%\bin

   验证:dos窗口,输入mvn -version

8.mavend的本地仓库.m2,解压到C;\user\当前用户名,maven是通过pom.xml文件管理项目中的jar文件

   maven是通过pom.xml文件管理项目中的jar文件(如何修改POM.XML文件:百度maven repository,进入官网,在官网中搜索 要下载的代码库Selenium,在搜素结果的详情页面, 找到maven选项卡,复制dependency的代码到pom.xml)

三、元素定位

定位元素,根据元素特有的属性确定元素的过程。页面中的元素是通过使用DOM元素(Document Object Model,HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准,还有XML DOM,核心DOM)属性进行实现的。

findElement、findElements

8种定位方法:

1.ID 大多页面元素没有ID,WebElement element = driver.findElement(By.id("xxx"));

2.name 不唯一,WebElement element = driver.findElement(By.name("xxx"));

3.tagName 同上,WebElement element = driver.findElement(By.tagName("xxx"));

4.className 同上,WebElement element = driver.findElements(By.className("xxx"));

5.linkText 只用于a标签,文字链接,WebElement element = driver.findElement(By.linkText("xxx"));

6.partialLinkText 只用于a标签,文字链接,WebElement element = driver.findElement(By.partailLinkText("xxx"));

7.css selector 常用,WebElement element = driver.findElements(By.cssSelector("xxx"));

怎么写css/xpath:

8.xpath 常用(可读性差,当元素路径调整了,使用Xpath的脚本也要调整,维护成本高)

Selenium 自动化测试之道--学习总结-WebDriver(一)

Selenium 自动化测试之道--学习总结-WebDriver(一)