IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 自动化测试及Selenium -> 正文阅读

[Python知识库]自动化测试及Selenium

一、自动化测试

自动化测试:将人为驱动的测试行为转化为机器执行的过程;
自动化测试的优点
(1)可以进行回归测试;
(2)节约资源;
(3)可靠性高且可以完成重复性测试;
(4)能够完成手工测试无法完成的测试(精准计时)

二、Selenium

1. Selenium 介绍及安装

Selenium 是一款用于web应用测试的工具,由 Selenium IDEWebdriverSelenium Grid组成;
(1)Selenium IDE:录制自动化脚本的工具;
(2)webDriver:驱动浏览器对Web元素进行操作;
(3)Selenium Grid:是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息;
安装命令:
pip install selenium ==3.12.0(指定版本)

2. Selenium 优势

  • 免费、小巧易安装;
  • 支持多语言:Java、Python、C#、javaScript
  • 支持多平台:windows、Linux、Mac
  • 支持多浏览器:chrome、Firefox、edge、safari
  • 支持分布式测试;

3. 安装驱动

谷歌浏览器驱动:驱动链接

点开链接,选择与自己浏览器所对应的版本即可,由于采用Python来实现脚本开发,因此,解压后将chromedriver.exe 文件,放在安装Python的目录下;

在这里插入图片描述
在这里插入图片描述

完成之后就可以进行下面操作啦~

三、webDriver API

1. 定位元素

<1> id 定位

id 是页面元素的属性,也是最常用的元素定位方式;
主要通过查看页面元素的 id 来进行定位(唯一);

如:经常访问的百度页面,通过查看可以知道其输入框的 id,如下图所示:
在这里插入图片描述
同样的方法就可以定位到其他页面元素的 id

方法

         find_element_by_id("kw")  :定位到百度输入框;

<2> name 定位

如果页面元素有name,并且元素的name命名在整个页面是唯一的,那么我们可以用name来定位这个元素;

同样的,可以通过上面方法找到name属性的值;
在这里插入图片描述
方法

       find_element_by_name("wd")  :定位到百度输入框

<3> class name 定位

定位之前需要保证唯一性!

在这里插入图片描述
方法

  find_element_by_class_name("s_ipt")  :定位到百度输入框;

<4> tag name 定位

tag name: 标签名

方法

find_element_by_tag_name("input")  :定位到百度输入框;

<5> link text 定位

link text:可以通过链接内容,也就是 link text来对文字链接进行定位;
需要注意的是:链接内容必须这个页面唯一,否则会报错;

方法

 find_element_by_link_text("hao123")

在这里插入图片描述

<6> partial link text 定位

只用链接的一部分文字进行匹配;

方法

    find_element_by_partial_link_text("hao")

<7> xpath 定位

该定位方式全局唯一,查找方法:
找到要定位的页面元素,右击—>检查---->copy----> copy xpath

<8> css selector 定位

  • 方法1
find_element_by_css_selector("#kw")
  • 方法2

页面元素-----右键----copy----copy selector 来获取

2. 操作测试对象

定位好之后需要对这个元素进行操作,具体什么操作,取决于需求,常见的有以下几种:

  • 鼠标点击: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()

结果如下:
在这里插入图片描述

3. 添加等待

  • 固定等待sleep()
  • 智能等待implicitly_wait()

4. 打印信息

  • 打印 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)

打印结果

在这里插入图片描述

5. 操作浏览器

  • 浏览器最大化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()

在这里插入图片描述

6. 键盘事件

注意:要使用键盘按键,必须引入keys

导包格式from selenium.webdriver.common.keys import Keys

通过send_keys()调用按键(单个形式):

  • Tab 键 :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)

7. 鼠标事件

注意:要使用鼠标事件,必须进行导包;

导包格式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() :移动

今天就先分享这么多啦,下一篇定位一组元素以及层级定位,加油,铁子们(别忘了点赞+收藏)~~

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:40:12  更:2022-08-06 10:43:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 12:27:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码