关于python+selenium的自动化测试需要用到的知识点总结

自己总结的python+selenium自动化测试的知识点,

***基础使用的整合案例:在第十六条与第十八条 ***

# coding = utf8
# 导入wrbdriver模块
from selenium import webdriver
一、打开网站
driver = webdriver.Chrome(r'浏览器驱动')
driver.get('地址')

浏览器去驱动需要去对应的浏览器网站下载,下载对应的版本号或相近版本号的驱动才能用。

二、设置等待时间
from time import sleep# 睡眠2秒
sleep(2)

时间是按照秒计算,并不是微秒。

三、页面刷新
# 当操作完成后页面没有立即刷新,可以模拟手动刷新
driver.refresh()

该操作等同于点击浏览器的刷新按钮。

四、模拟前进、后退
# 后退
driver.back()
# 前进
driver.forward()

等同于浏览器的前进后退操作

五、设置窗口大小
# 最大化
driver.maximize_window()
# 最小化
driver.minimize_window()
# 设定窗口固定大小
driver.set_window_size(height=600, width=800)
driver.set_window_size(600, 800)  # 简写方式
六、截屏
driver.get_screenshot_as_file('保存路径 例: D:/xxx  ')
七、退出浏览器
# 关闭当前窗口
driver.close()
# 结束进程,关闭所有窗口
driver.quit()
八、元素定位法

定位法操作控件的元素可以在浏览器的控制台Elements窗口查看网页源代码。

# name定位
driver.find_element_by_name("操作控件元素的里name属性").clear()
driver.find_element_by_name("操作控件元素的里name属性").send_keys("输入内容")# xpath定位Xpath在源代码也上右击需要操作的元素可以找到直接复制。
driver.find_element_by_xpath("/html/body/div[3]/form/div[3]/div/input").send_keys("admin.syzg")# class_name定位
driver.find_element_by_class_name("操作控件元素的里class-name属性").click()#点击操作# id定位
driver.find_element_by_id("操作控件元素的里id属性").click()# link_text定位,通过文本定位
driver.find_element_by_link_text(" 操作控件元素标签后的文本内容").click()# partial_link_text定位模糊搜索文本定位
driver.find_element_by_partial_link_text("操作控件元素标签后一本分文本内容").click()# css_selector定位和xpath定位法的操纵相同。写法和css相同
#元素的ID
driver.find_element_by_css_selector("#res_title").send_keys("测试文档")
#元素的类。
driver.find_element_by_css_selector(".res_title").send_keys("测试文档")
九、复数元素定位法
# 把元素定位法的element改为elements;注意返回的是一个数组集合
#然后通过遍历数组取出其中一个元素进行操作。或者直接使用数组下标
#选择元素进行操作。
# 例:
als = driver.find_elements_by_id('i1')
als[0].send_keys('复数定位法')
for al in als:
al.send_keys('复数定位法')print(al)
#下标操作元素的简写
driver.find_elements_by_id('i1')[0].send_keys('复数定位法')
十、常用的鼠标操作
# ActionChains提供的鼠标常用操作方式
# perform()执行所有ActionChains中存储的行为
# context_click()右击
# double_click()双击
# drag_and_drop()拖到
# move_to_element()鼠标悬停# 注意使用前需要到导入包
# 导入ActiomChains(鼠标操作模块)
from selenium.webdriver.common.action_chains import ActionChains# 创建ActionChains对象注意使用是需要传入webdriver
action = ActionChains(driver)# context_click()右击
# 定位到所需右击元素
right_click = driver.find_element_by_id('xx')
# 进行右击击操作
action.context_click(right_click).perform()# double_click()双击
# 定位到所需双击元素
double_click = driver.find_element_by_id('xx')
# 进行双击操作
action.double_click(double_click).perform()# drag_to_element()拖拽
# 定位到所需拖拽元素
# 起始位置
source = driver.find_element_by_id('xx')
# 结束位置
target = driver.find_element_by_id('xx')
# 执行拖拽
action.drag_and_drop(source, target).perform()# 鼠标悬停
# 定位需要悬停的元素
move = driver.find_element_by_id('xx')
# 执行悬停
action.move_to_element(move).perform()
十一、常用键盘模拟操作
# send_keys(Keys.CONTROL,'a') #全选(Ctrl+A)
# send_keys(Keys.CONTROL,'c') #负责(Ctrl+C)
# send_keys(Keys.CONTROL,'v') #粘贴(Ctrl+V)
# send_keys(Keys.CONTROL,'x') #剪切(Ctrl+X)
# 回车  Keys.ENTER
# 删除  Keys.BACK_SPACE
# 空格  Keys.SPACE
# 制表符 Keys.TAB
# 回退 Keys.ESCAPE
# 刷新  Keys.F5# 导入键盘操作模块
from selenium.webdriver.common.keys import Keysdriver.find_element_by_id('xx').send_keys(Keys.CONTROL, 'a')  # 全选操作
driver.find_element_by_id("xx").send_keys(Keys.ENTER)  # 通过回车键来代替鼠标的左键
十二、submit使用
submit()
# 用于对信息进行提交,也可以使用click()进行代替,submit()要求提交对象是一个表单,click()更强调事件的独立性
十三、Selenium之页面中下拉框的处理
# 导入Select(下拉框)模块
from selenium.webdriver.support.select import Selectfind = driver.find_element_by_id('xx')  # 元素定位信息
# 根据索引值选择(从0开始)
Select(find).select_by_index('0')
# 根据标签的value 值选择
Select(find).select_by_value(' value = "xxx"')
# 根据文本值选择
Select(find).select_by_visible_text('文本内容')# 取消下拉框的选择吧方法名select改为deselect开头
# deselect_by_value()#根据选项的value属性,去除选中元素
# deselect_by_index()#根据选项的次序,去除选中元素
# deselect_by_visible_text()#根据选项的可见文本,去除选中元素
# deselect_all()#去除所有的选中元素
十四、滚动条方法
# 竖向滚动条,拉到最底部
js = 'var q = document.documentElement.scrollTop = 10000'
driver.execute_script(js)  # 执行js语句
# 横向滚动条控制
js = 'window.scrtllTo'
driver.execute_script(js)
十五、窗口切换
 #每个浏览器窗口都有一个唯一的属性句柄(handle)来表示
# 当前窗口句柄、所有窗口句柄
# 窗口切换
# 导入WebdriverWait(显式等待)
from selenium.webdriver.support.wait import WebDriverWait# 打开百度首页
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 获取当前窗口句柄
main_windows = driver.current_window_handle
print(main_windows)
# 进入注册
driver.find_element_by_link_text("登录").click()
# 这里加一个显示等待,不然有时会报找不到“立即注册这个元素”注意导模块
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(driver, 20).until(lambda x: x.find_element_by_link_text("立即注册")).click()
# 获取当前所有打开的窗口句柄
all_windows = driver.window_handles
print(all_windows)
# 切换进注册页面
for handle in all_windows:if handle != main_windows:driver.switch_to.window(handle)
# 获取注册页面窗口句柄
register_windows = driver.current_window_handle
print(register_windows)
# 切换回百度首页
driver.switch_to.window(main_windows)
print(driver.title)
十六、Selenium消息框处理(alert、confirm、prompt)
# 导入EC(预期结果过)用于使用显示等待时间的判定
# from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec# 弹出窗 -alert-处理
driver.find_element_by_id('xx').click()
sleep(3)
WebDriverWait(driver, 20).until(ec.alert_is_present())
print(driver.switch_to.alert.text)  # 打印提示内容
driver.switch_to.alert.accept()  # 点击Ok# 弹出窗 -Confirm-处理
driver.find_element_by_id('xx').click()
sleep(3)
WebDriverWait(driver, 20).until(ec.alert_is_present())
print(driver.switch_to.alert.text)  # 打印提示内容
driver.switch_to.alert.accept()  # Ok
driver.switch_to.alert.dismiss()  # NO# 弹出窗 -Confirm-处理
driver.find_element_by_id('xx').click()
sleep(3)
WebDriverWait(driver, 20).until(ec.alert_is_present())
alert = driver.switch_to.alert
print(alert.text)  # 打印提示内容
alert.send_keys('hahahahha')  # 输入内容
alert.accept()  # OK
driver.find_element_by_id('xx').click()
alert = driver.switch_to.alert
alert.dismiss()  # no
十七、单复选框操作
# 单选框-radioCheckbox-的的操作
element = driver.find_element_by_css_selector('[checked="checked"]')
print('初始选中的是-=-=-' + element.get_attribute('value'))  # 打印value的值element1 = driver.find_element_by_css_selector('xx')
element1.click()
print('当前选中的是' + element1.get_attribute('value'))# 复选框-checkbox-的操作
# 操作思想:先把所有选项的全部设为未选中状态,确保都是未选中,
# 再点击需要选中的目标,判断是否为选中为带有checkbox属性的标签:
# 注意是多选框需要用elements
elements = driver.find_elements_by_css_selector('[checked="checked"]')
# 全部取消选中操作
for element in elements:element.click()
# 进行多选择操作
driver.find_element_by_css_selector('xx').click()
driver.find_element_by_css_selector('xx').click()
十八、cdv, ddt,unittests 的操作
# 导入unittest
import unittest
# 导入csb
import csv
# 导入ddt
from ddt import ddt, data, unpack
#csv操作
def getCsv():list = []#建立一个集合#打开csv表格并起个名称with open('./xxx.csv',encoding='utf-8') as f:# 逐行读取csv表格你的内容f_csv = csv.reder(f)next(f_csv)#跳过首行#遍历读取的内容,并存入list集合for row in f_csv:print(row)list.append(row)return list #返回# 建一个类继承unittest.TestCaseT
@ddt  # 要使用ddt需要在类之前运用装饰器
class Allknowledge(unittest.TestCase):# 初始化当前测试用例def setUp(self):self.driver = webdriver.Chromeself.driver.get()self.driver.maximize_window()self.driver.implicitly_wait(30)  # 隐式等待30秒# 释放当前测试用例def tearDown(self):driver.refresh()sleep(5)self.driver.quit()# 运行前初始化整个类@classmethod  # 必须要带这个装饰器def setUpClass(cls):print('tclass')# 结束后释放整个类@classmethod  # 必须要带这个装饰器def tearDownClass(cls):print('teardown')@data(*getCsv())@unpack#解析获取到的文本并赋值下方a,bdef test_a(self, a, b,c):driver = self.driverdriver.find_element_by_id('xx').send_keys(a)driver.find_element_by_id('xx').send_keys(b)driver.find_element_by_id('xx').click()  # 打开弹窗sleep(2)# 显式等待直到弹窗出现,否则超时报异常# 获取弹窗提示内容alertText = driver.switch_to.alert.texttry:# 断言弹窗内容是否与预期结果相符合,# 需要主动抛出异常,否则会报错self.assertEqual(alertText, c)except Exception:print(alertText)
十九、断言
        #注:断言不会返回 Boolean型的数据#判断两个参数是否下相等,相等返会Nonestr(self.assertEqual(a, b)#判断参数一是否是参数二的子集,如果是返回Noneself.assertIn(a, b)#判断两个对象是否相等,相等返回Noneself.assertIs(a, b)

自己目前就总结了这些,如有不足欢迎大佬提出斧正.和补充。

关于python+selenium的自动化测试需要用到的知识点总结相关推荐

  1. 快速搭建Python+Selenium+Sublime 自动化测试环境方法

    随着业内越来越多的公司对自动化测试的大力推行,对测试人员能够使用自动化工具的要求也随之增多.为了能让更多的同事在学习selenium的初期,能够顺利的迈出第一步,即可以通过代码操作selenium d ...

  2. python测试系列教程——python+Selenium+chrome自动化测试框架

    全栈工程师开发手册 (作者:栾鹏) python教程全解 需要的环境 浏览器(Firefox/Chrome/IE-) Python Selenium Selenium IDE(如果用Firefox) ...

  3. python+selenium+unittest自动化测试框架

    前言 关于自动化测试的介绍,网上已有很多资料,这里不再赘述,UI自动化测试是自动化测试的一种,也是测试金字塔最上面的一层,selenium是应用于web的自动化测试工具,支持多平台.多浏览器.多语言来 ...

  4. Python + Selenium + UnitTest自动化测试面试题目整理

    1.如何使用Selenium进行自动化测试 ? 结合Python + Selenium + UnitTest 2.自动化测试框架 分层+PO模式: 包含基础封装层BasePage.PO页面对象层.Te ...

  5. python selenium自动化框架_一文讲透!实现一个Python+Selenium的自动化测试框架如此简单!...

    首先你得知道什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium I ...

  6. python+selenium+pycharm自动化测试环境搭建

    1. 下载Python Python Release Python 3.8.0 | Python.org 本人电脑是64位的,下载相应文件. 进入cmd(windows命令提示符)下面输入" ...

  7. Python Selenium UI自动化测试

    1.自动化测试基础 1.1 自动化测试的定义 将人为的测试行为转化为机器自动执行的过程 1.2 自动化测试的目的 减少成本,提高测试效率 减少人为因素对测试的影响 1.3 什么项目适合做自动化测试 项 ...

  8. 使用Python+selenium实现自动化测试脚本实例

    目录 写在前面 安装selenium之前所需内容 安装setuptools 安装pip 安装selenium 安装Firefox驱动 脚本运行 代码解释 谷歌浏览器的使用 写在前面 本教程亲测有效. ...

  9. 论文python+selenium网页自动化测试论文_毕业设计(论文)-基于selenium的web自动化测试.docx...

    基于Selenium的Web自动化测试1 绪论1.1引言网络时代的到来和迅速普及,为软件产业带来了一场革命性的变化,基于Web的应用系统已经开始逐步取代原来的单机版应用系统,成为当前和未来的软件系统开 ...

最新文章

  1. 一步一步粗谈linux文件系统(三)----超级块(superblock)【转】
  2. 某程序员吐槽:前端开发被哄抢,专科学历能进大厂;客户端开发找工作难如登天,985本硕拿不到一个offer!...
  3. Scala入门到精通——第二十九节 Scala数据库编程
  4. JQuery中一些常用函数的运用
  5. android百分比布局失效,Android 百分比布局库【原创】
  6. 贵大计算机在职,贵州大学在职研究生招生信息网
  7. pycharm 代码跳转
  8. qt linux 视频教程,详解 QT 显示视频 Linux下 Qt 和 Xv实现
  9. 面试字节跳动计算机视觉算法实习岗位
  10. tbschedule 前后置处理器、定期执行任务
  11. word外部表不是预期的格式_邮件合并为什么会出现外部表不是预期格式
  12. Excel VBA小程序 -使用VBA实现VLOOKUP函数查询?
  13. 算法-使用双指针遍历删除链表节点
  14. 某一点绕另一点逆时针旋转90后的坐标
  15. 如何在家赚钱,盘点5个方法,让你足不出户也能挣钱
  16. 运维工程师不可错过的2020年值得关注的综合性网络监控工具
  17. HTTP版本之间的区别
  18. 【Crypto】判断密文的加密方式
  19. 多项式最小二乘法曲线拟合Python程序
  20. 2021年光明区入驻科技创新产业园科技企业租金补贴申报指南

热门文章

  1. vue多张图片实现TV端长图浏览组件
  2. 【洛谷】P2676 [USACO07DEC]Bookshelf B (c++)
  3. 年度钜献,108个大数据文档PDF开放下载
  4. 数字证书如何申请以及有什么要求
  5. 阿里巴巴跨物理界招人,世界级音频专家冯津伟入职人工智能团队iDST
  6. Linux添加第二IP地址,Centos 给网卡添加第二个 IP 地址
  7. powerbuilder pbd文件保护方式-pb防止反编译研究
  8. Dmc雷赛板卡仿写(六):数据在程序中的保存与读取 ,类变量读写,json文件数据读入,ini文件数据读入
  9. ALIENTEK STM32开发板最新光盘资料
  10. 文库自由复制(纯文本)