自动化测试:将人为驱动的测试行为转化为机器执行的过程;
自动化测试的优点:
(1)可以进行回归测试;
(2)节约资源;
(3)可靠性高且可以完成重复性测试;
(4)能够完成手工测试无法完成的测试(精准计时)
Selenium是一款用于web应用测试的工具,由Selenium IDE,Webdriver与Selenium Grid组成;
(1)Selenium IDE:录制自动化脚本的工具;
(2)webDriver:驱动浏览器对Web元素进行操作;
(3)Selenium Grid:是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息;
安装命令:
pip install selenium ==3.12.0(指定版本)
Java、Python、C#、javaScript;windows、Linux、Mac;chrome、Firefox、edge、safari;谷歌浏览器驱动:驱动链接
点开链接,选择与自己浏览器所对应的版本即可,由于采用Python来实现脚本开发,因此,解压后将chromedriver.exe 文件,放在安装Python的目录下;


完成之后就可以进行下面操作啦~
id是页面元素的属性,也是最常用的元素定位方式;
主要通过查看页面元素的id来进行定位(唯一);
如:经常访问的百度页面,通过查看可以知道其输入框的 id,如下图所示:

同样的方法就可以定位到其他页面元素的 id;
方法:
find_element_by_id("kw") :定位到百度输入框;
如果页面元素有
name,并且元素的name命名在整个页面是唯一的,那么我们可以用name来定位这个元素;
同样的,可以通过上面方法找到name属性的值;

方法:
find_element_by_name("wd") :定位到百度输入框
定位之前需要保证唯一性!

方法:
find_element_by_class_name("s_ipt") :定位到百度输入框;
tag name: 标签名
方法:
find_element_by_tag_name("input") :定位到百度输入框;
link text:可以通过链接内容,也就是link text来对文字链接进行定位;
需要注意的是:链接内容必须这个页面唯一,否则会报错;
方法:
find_element_by_link_text("hao123")

只用链接的一部分文字进行匹配;
方法:
find_element_by_partial_link_text("hao")
该定位方式全局唯一,查找方法:
找到要定位的页面元素,右击—>检查---->copy----> copy xpath
find_element_by_css_selector("#kw")
页面元素-----右键----copy----copy selector 来获取
定位好之后需要对这个元素进行操作,具体什么操作,取决于需求,常见的有以下几种:
click;send_keys ;clear;submit;text;case1:打开百度,搜索电视剧《天才基本法》
代码:
# 打开百度,搜索电视剧天才基本法
# 导入需要的工具包
from selenium import webdriver
import time
# 获取浏览器驱动
driver = webdriver.Chrome()
time.sleep(3)
# 获取百度页面
driver.get("http://www.baidu.com")
time.sleep(3)
# 定位百度输入框,采用id定位的方式来定位元素,之后输入天才基本法
driver.find_element_by_id("kw").send_keys("天才基本法")
time.sleep(3)
driver.find_element_by_id("su").click()
time.sleep(3)
# 关闭浏览器
driver.quit()
case2:获取百度页面最下面的文字

代码:
# 导入需要的工具包
from selenium import webdriver
import time
# 获取浏览器驱动
driver = webdriver.Chrome()
time.sleep(3)
# 获取百度页面
driver.get("http://www.baidu.com")
time.sleep(3)
data = driver.find_element_by_id("bottom_layer").text
print(data)
time.sleep(3)
# 关闭浏览器
driver.quit()
结果如下:

sleep()implicitly_wait()URL# 导入需要的工具包
from selenium import webdriver
import time
# 获取浏览器驱动
driver = webdriver.Chrome()
time.sleep(3)
# 获取百度页面
driver.get("http://www.baidu.com")
time.sleep(3)
print(driver.current_url)
打印结果:

title# 导入需要的工具包
from selenium import webdriver
import time
# 获取浏览器驱动
driver = webdriver.Chrome()
time.sleep(3)
# 获取百度页面
driver.get("http://www.baidu.com")
time.sleep(3)
print(driver.title)
打印结果:

maximize_window()# 导入需要的工具包
from selenium import webdriver
import time
# 获取浏览器驱动
driver = webdriver.Chrome()
time.sleep(3)
# 获取百度页面
driver.get("http://www.baidu.com")
time.sleep(3)
driver.maximize_window()
time.sleep(2)
driver.quit()
set_window_size(480,800)# 导入需要的工具包
from selenium import webdriver
import time
# 获取浏览器驱动
driver = webdriver.Chrome()
time.sleep(3)
# 获取百度页面
driver.get("http://www.baidu.com")
time.sleep(3)
driver.set_window_size(480,800)
time.sleep(2)
driver.quit()
forward(), back()from selenium import webdriver
import time
# 访问百度首页
driver = webdriver.Chrome()
first_url = 'http://www.baidu.com'
driver.get(first_url)
time.sleep(2)
# 访问新闻页面
second_url='http://news.baidu.com'
driver.get(second_url)
time.sleep(2)
# 返回(后退)到百度首页
print("back to %s "%(first_url))
driver.back()
time.sleep(1)
# 前进到新闻页
print("forward to %s"%(second_url))
driver.forward()
time.sleep(2)
driver.quit()

注意:要使用键盘按键,必须引入keys 包
导包格式:from selenium.webdriver.common.keys import Keys
通过send_keys()调用按键(单个形式):
send_keys(Keys.TAB);send_keys(Keys.Enter);send_keys(Keys.Space);Esc回退键:send_keys(Keys.ESCAPE);通过send_keys()调用按键(组合形式):
send_keys(Keys.CONTROL,'a')send_keys(Keys.CONTROL,'c')send_keys(Keys.CONTROL,'v')send_keys(Keys.CONTROL,'x')case:打开百度,将浏览器最大化,之后输入“刷牙步骤”,完成后,全选并剪切,重新搜素“webdriver”
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window()
time.sleep(3)
# 输入框输入内容
driver.find_element_by_id("kw").send_keys("刷牙步骤")
time.sleep(3)
# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(3)
# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(3)
# 输入框重新输入内容,搜索
driver.find_element_by_id("kw").send_keys("webdriver")
time.sleep(3)
注意:要使用鼠标事件,必须进行导包;
导包格式:from selenium.webdriver.common.action_chains import ActionChains
context_click() (前提先定位元素)double_click() (前提先定位元素)drag_and_drop()move_to_element()case:打开百度浏览器,最大化,然后搜索张三,再进行右击和双击操作
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Chrome()
# 获取新闻页面
driver.get("http://www.baidu.com")
driver.maximize_window()
driver.find_element_by_id("kw").send_keys("张三")
time.sleep(3)
driver.find_element_by_id("su").click()
b = driver.find_element_by_id("su")
# 右击
ActionChains(driver).context_click(b).perform()
time.sleep(3)
# 双击
ActionChains(driver).double_click(b).perform()
time.sleep(3)
driver.quit()
selenium 安装 及自动化测试的优势webDriver API:
id,name,tag name,xpath, link text,partial link text ,class name,css selectot
clear():清除文本
send_keys(value):键盘输入
click():单击元素
submit():提交表单
text:获取元素的文本
quit():退出浏览器操作
driver.set_window_size(value,value):设置浏览器的大小,单位是像素;
driver.maximize_window():浏览器最大化;
driver.back():控制浏览器后退 ;
driver.forward():控制浏览器前进;
driver.title:获取网页标题
driver.current_url:获取网页url
context_click():右击
double_click():双击
drag_and_drop():拖动
move_to_element():移动
今天就先分享这么多啦,下一篇定位一组元素以及层级定位,加油,铁子们(别忘了点赞+收藏)~~