目录
前言:
WebDriver 是一个自动化测试工具,主要用于模拟浏览器行为,实现自动化测试。下面是一些 WebDriver 常用 API 总结:
1. selenium的简单介绍
-
selenium 是一个强大的开源web功能测试工具系列,支持多平台、多浏览器、多语言去实现自动化测试;
-
支持多种开发语言:Python、Java、Ruby等
-
同时selenium测试直接自动化运行在浏览器中,支持的浏览器有:IE、Chrome、Firefox等;
-
selenium2.0的主要新功能是集成了WebDriver,WebDriver通过原生浏览器支持或者浏览器扩张直接控制浏览器。
2. selnium的下载
2.1 Python中的下载
前提:安装好python环境
以管理员的身份运行cmd,输入命令:pip install seelnium
因为我已经安装过了,如果没有安装过的会显示下载进度条,这个速度可能会很慢,建议选择网好的时候下载;
利用 pin show selenium查看是否下载好;
2.2 安装selenium IDE
我用的是Firefox浏览器(其他浏览器步骤一样)
第一步:
第二步:
第三步:
第四步:
安装成功在在浏览器的右上角会有标记:
3. WebDriver常用API
3.1 脚本简单应用的介绍
脚本解析:coding = utf-8 (可加可不加,一般加上防止乱码) 使用selenium的WebDriver里的函数,要先把包导入:from selenium import webdriver 导入使用浏览器的驱动:driver = webdriver.Firefox() 关闭窗口: driver.quit():不仅退出窗口,而且关闭整个webdriver,释放连接 driver.close():关闭当前的浏览器; 所以简单来说quit是更加彻底的close,quit会更好的释放资源
3.2 元素的定位
对象的定位应该是自动化测试的核心,要想操作一个对象,首先要识别这个对象,一个对象就是一个人一样,会有各种的特征(属性),比如我们可以通过一个人的身份证号,姓名,或者他住在哪个街道、楼层、门派找到这个人。那么一个对象也有类似的属性,我们可以通过和这个属性找到这个对象。 注意:不管用什么方式,必须保证页面上该属性的唯一性。
常用的有以下几种:
-
id
-
name
-
class name
-
link text
-
partial link text
-
tag name
-
xpath
-
css selector
在这里,以百度为例:
(1)在输入框里输入数据后,点击百度一下,这里定位两个元素:输入框、百度一下按钮,(进行右击,点击检查元素)
(2)定位
input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
#通过id 方式定位
driver.find_element_by_id("kw").send_keys("selenium")
#通过name 方式定位
driver.find_element_by_name("wd").send_keys("selenium")
#通过CSS 方式定位
driver.find_element_by_css_selector("#kw").send_keys("selenium")
#通过xpath 方式定位
driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
3.2.1 id和name定位
id 和name 是我们最常用的定位方式,因为大多数控件都有这两个属性,而且在对控件的id 和name 命名时一般使其有意义也 会取不同的名字。通过这两个属性使我们找一个页面上的属性变得相当容易。
通过上面的过程可以去找id和name的元素名称
通过id定位:
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
# 1.通过id定位,kw为百度输入框的id
driver.find_element_by_id("kw").send_keys("张杰")
time.sleep(6)
# 搜索的按钮的id为su,click()表示点一下按钮
driver.find_element_by_id("su").click()
time.sleep(6)
driver.quit()
通过name定位:
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
# 2.通过name定位
driver.find_element_by_name("wd").send_keys("张杰")
time.sleep(6)
driver.find_element_by_id("su").click()
time.sleep(6)
driver.quit()
3.2.2 tag name 和class name 定位
从上面百度输入框的属性信息中,我们看到,不单单只有id和name两个属性,比如class 和tag name(标签名) i