Selenium学习笔记

一、自动化基础概念

1、自动化工具(相当于手机的CPU)

主流的测试工具:

  1. Selenium(webdriver):学习教程

  2. Puppeteer:学习教程

  3. Cypress:学习教程

  4. Playwright:学习教程

以上工具只是提供了一套操作浏览器的API,如:打开页面、输入、点击、截图、上传等

2、自动化框架(相当于具体的手机)

自动化框架提供一整套测试方案,如:

  • 用例的概念
  • 执行规则
  • 执行的结果,生成报告
  • 设计模式

主流的测试框架:

  • Robot framework(集成了SeleniumLibrary)
  • SeleniumBase(基于Selenium)
  • Seldom(基于Selenium)

3、 selenium的工作原理

1. selenium1.0=selenium RC+selenium IDE+selenium Grid

  • selenium IDE:集成在Firefox浏览器的插件,实现简单的浏览器操作的录制与回放功能

  • selenium Grid:用来做分布式的,如一套代码在不同的环境上运行

  • selenium RC(Remote Control):被集成在一个selenium service -XXX.jar,支持多种不同语言编写的自动化测试脚本,通过
    Selenium RC 的服务器作为代理服务器去访问应用,从而达到测试的目的。

selenium RC工作方式:python(selenium)—>selenium server(监听4444端口)—>浏览器执行

2. selenium2.0=selenium1.0+webdriver

webdriver工作方式:python(selenium)—>Chromedriver驱动器—>浏览器执行

python(selenium默认自带Firefox驱动)—>浏览器执行

3. selenium3.0=selenium2.0-selenium RC

webdriver工作方式:python(selenium)—>Chromedriver驱动器—>浏览器执行

python(selenium-Firefox驱动被剥离了)—>浏览器执行

4. 各个浏览器驱动对应名称:

  • geckodriver(Firefox)
  • Chromedriver(Chrome)
  • IEDriverServer(IE)
  • operadriver(Opera)
  • phantomjs(PhantomJS)
  • MicrosoftWebDriver(Edge)

下载浏览器驱动器后,解压放入文件夹中,将文件夹地址配置到系统的环境变量下,然后重启IDE

4、自动化测试核心是学三个技术

  1. 编程语言:Python、Java…
  2. selenium、Appium、request的使用
  3. 单元测试框架:UnitTest、Pytest
  4. 扩展:集成报告,自动发送邮件、po设计模式、数据驱动
    环境安装

selenium安装

安装 python(推荐3.8)

pip install Selenium
pip show Selenium

python目录

D:\software\Python39:项目的根目录
D:\software\Python39\Scripts:可执行文件
D:\software\Python39\Lib\site-packages:存放所有安装的第三方库和框架

编辑器和IDE

  • 通用的编写文本的工具:记事本
  • 代码编辑器:sublime text、vscode
  • IDE:集成开发工具:eclipse、pycharm(不要用虚拟环境)

5、 自动化基本概念

  1. 库:是由代码集合成的一个产品,供程序员调用。面向对象的代码组织形成的库叫类库,面向过程的代码组织形成的库叫函数库。解决的是一个问题点,如:time、selenium、requests等

  2. 框架:是为解决一个或一类问题而开发的产品,用户一般只需要使用框架提供的类或函数,即可实现全部功能。解决一个问题面,如:django、unittest等

  3. 工具:跟框架类似,但是它屏蔽了底层的代码,一般提供单独的操作界面供用户操作。解决一个问题面,如:selenium IDE等

6、自动化测试模型

  1. 线性测试:一系列的顺序操作,每个测试脚本相对独立,且不产生其他依赖与调用。简单来说就是单纯的来模拟用户完整的操作场景。

  2. 模块化与类库:把重复的操作独立成封装成公共模块,当用例执行过程中需要用到这一模块操作时则被调用,这样就最大限度地消除了重复,从而提高测试用例的可维护性。

  3. 数据驱动测试:数据的改变影响结果的改变。例如登录不同的用户,登录操作一致,但是用户不一致,则可以使用数据驱动,如ddt,parameterized库

  4. 关键字驱动测试:把操作封装成关键字,调用关键字实现操作。如robotframework

二、WebDriver API

1、定位元素的方法

** WebDriver 提供了八种元素定位方法(elements定位一组元素):**

  1. 使用导包By(4.0)from selenium.webdriver.common.by import By
  • id
driver.find_element(By.ID,"kw")
  • name
driver.find_element(By.NAME,"wd")
  • class_name
driver.find_element(By.CLASS_NAME,"s_ipt")
  • tag_name
driver.find_element(By.TAG_NAME,"input")
  • link_text
driver.find_element(By.LINK_TEXT,"新闻")
  • partial_link_text
driver.find_element(By.PARTIAL_LINK_TEXT,"新")
  • xpath
driver.find_element(By.XPATH,"//*[@class='bg s_btn']/input[2]") #'//' 在某一层级下面,'/'在html下面,*任意标签
  • css
find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input:nth-child(2)#su") # 定位第二个标签的子元素
  1. 使用find_element_by_*
  • id
driver.find_element_by_id("kw")
  • name
driver.find_element_by_name("wd")
  • class_name
driver.find_element_by_class_name("s_ipt")
  • tag_name
driver.find_element_by_tag_name("input")
  • link_text
driver.find_element_by_link_text("新闻")
  • partial_link_text
driver.find_element_by_link_text("新")
driver.find_element_by_xpath('//input[contains(@class="s_ipt")]') #contains包含文本
driver.find_element_by_css_selector('[name="wd"]') #注:#代表id .代表class

2、UI自动化元素的定位技巧:

  1. 在当前页面是唯一的元素名称:可以在浏览器的console确定元素是否是唯一的(document.querySelectorAll("div#kw")
  2. 标签无元素属性时,可以通过父级查找
  3. 可以使用逻辑符号连接元素and,增加唯一性
  4. 4.0增加了相对定位(near/above/below/to_left_of/to_right_of)

3、常用API

  1. 设置浏览器窗口尺寸
driver.set_window_size(wide, high)
  1. 浏览器前进、后退
driver.forward() #前进
driver.back() #后退
  1. 模拟浏览器刷新
driver.refresh()
  1. 鼠标事件
  • ActionChains提供鼠标操作的常用方法:
  • perform(): 执行所有 ActionChains 中存储的行为
  • context_click(): 右击
  • double_click(): 双击
  • drag_and_drop(): 拖动
  • move_to_element(): 鼠标悬停
from selenium.webdriver.common.action_chains import ActionChains #导包

# 定位到要悬停的元素
above = driver.find_element_by_link_text("设置")
# 对定位到的元素执行鼠标悬停操作
ActionChains(driver).
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值