备注:摘自《selenium2 python  自动化测试实战》- 虫师

(一)什么样的项目适合自动化测试
1.软件需求变动不频繁
  测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根
据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需
要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试
成本,那么自动化测试便是失败的。
项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动
化测试,而变动较大的仍是用手工测试。
2.项目周期较长
  由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时
间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期
比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。
3.自动化测试脚本可重复使用
  自动化测试脚本的重复使用要从三个方面来考量,一方面所测试的项目之间是否很大的差异性(如
C/S 系统和 B/S 系统的差异);所选择的测试工具是否适应这种差异;最后,测试人员是否有能力开发出适应这种差异的自动化测试框架。
(二)selenium
  selenium 自动化测试浏览器,它主要是用于 Web 应用程序的自动化测试,但肯定不只局限于此,同
时支持所有基于 web 的管理任务自动化。

XML
  XML 是指扩展标记语言,是标准通用标记语言的一个子集;与 HTML 类似,但它并非 HTML 的替代品,它们为不同的目的而设计;HTML 被设计用来显示数据,其焦点是数据的外观。XML 被设计为传输和存储数据,其焦点是数据的内容。

webdriver操作
driver.maximize_window()     #将浏览器最大化显示
driver.set_window_size(480, 800)        #设置浏览器宽480、高800显示

XPath定位
优缺点:有点是定位的元素很难找到合适的方式时,可以通这种绝对路径的方式定位,缺点是当元素在很多级目录下时,要写很长的路径,这种方式难以阅读和维护。
1、性能差,定位元素的性能比其它大多数方式差;
2、不够健壮,XPath会随着页面元素布局的改变而改变;
3、兼容性不好,在不同的浏览器下对 XPath 的实现是不一样的。

鼠标事件
ActionChains 类鼠标操作的常用方法:
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停在一个元素上
click_and_hold() 按下鼠标左键在一个元素上
参考代码
#引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要右击的元素
right =driver.find_element_by_xpath("xx")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right).perform()
....
具体解释:
from selenium.webdriver.common.action_chains import ActionChains
在使用 ActionChains 类下面的方法之前,将包引入。
ActionChains(driver)
driver: wedriver 实例执行用户操作。
ActionChains 用于生成用户的行为;所有的行为都存储在 actionchains 对象。通过 perform()执行存储的行为。
perform()
执行所有 ActionChains 中存储的行为。perfrome()同样也是 ActionChains 类提供的的方法,通常与ActionChains()配合使用。

设置等待时间
  sleep():设置固定休眠时间。python 的 time 包提供了休眠方法 sleep() ,导入 time包后就可以使用sleep()进行脚本的执行过程进行休眠。
implicitly_wait():是 webdirver 提供的一个超时等待。隐式等待一个元素被发现,或一个命令完成。
如果超出了设置时间的则抛出异常。
WebDriverWait():同样也是 webdirver 提供的方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。

import os
os.path.abspath()
os 模块为 python 语言标准库中的, os 模块包含普遍的操作系统功能。主要用于操作本地目录文件。path.abspath()方法用于获取当前路径下的文件。

浏览器多窗口处理
  要想在多个窗口之间切换,首先要获得每一个窗口的唯一标识符号(句柄)。通过获得的句柄来区别
分不同的窗口,从而对不同窗口上的元素进行操作。
处理过程:
  这个处理过程相比我们前面的元素操作来说稍微复杂一些,执行过程为:首选通过 nowhandle 获得当前窗口(百度首页)的句柄;然后,打开注册窗口(注册页);通过 allhandles 获得所有窗口的句柄;对所有句柄进行循环遍历;判断窗口是否为 nowhandle(百度首页),如果不是则获得当前窗口(注册页)的句柄;然后,对注册页上的元素进行操作。最后,回返到首页。

current_window_handle
获得当前窗口句柄
window_handles
返回的所有窗口的句柄到当前会话
switch_to_window()
用于处理多窗口操作的方法
close()
用于关闭当前窗口

转载于:https://www.cnblogs.com/lzyp2008/p/6999975.html

selenium学习笔记(一)相关推荐

  1. selenium学习笔记之元素定位

    selenium学习笔记之元素定位 Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. 首先需要创建浏览器驱动: from sele ...

  2. 【selenium学习笔记】selenium自动化测试环境安装

    工作中需要用到selenium,因此将学习和工作过程中的笔记整理 下. [Install selenium] 联网情况下,直接利用pip安装按照如下命令安装selenium.[如何安装pip?]--- ...

  3. selenium学习笔记(4)——自动点击美团上面的美食中的代金券

    想要系统学习python selenium自动化测试,请关注我的专栏: https://blog.csdn.net/column/details/29112.html 自动点击美团上面的美食中的代金券 ...

  4. Python+Selenium学习笔记8 - 多表单多窗口切换

    1.多表单切换 下图为待测页面:内嵌百度首页 切换到百度首页进行操作 1 #coding = utf-8 2 3 from selenium importwebdriver4 importos5 im ...

  5. 基于Java的Selenium学习笔记——Assert

    用assert来判断一个表达式,返回true或者false,若表达式返回false,则会导致AssertionError. 注意Eclipse中assert默认是关闭的,需手动开启,如下图: 第一个简 ...

  6. Python+Selenium学习笔记10 - send_keys上传文件

    在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding = utf-8 2 3 from ...

  7. Python+Selenium学习笔记5 - python官网的tutorial - 交互模式下的操作

    这篇笔记主要是从Python官网的Tutorial上截取下来,再加上个人理解 1. 在交互模式下,下划线'_'还可以表示上一步的计算结果 2.引号转义问题. 从下图总结的规律是,字符串里的引号如果和引 ...

  8. 【selenium学习笔记一】python + selenium定位页面元素的办法。

    1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的 ...

  9. 基于Java的Selenium学习笔记——启动Chrome

    用Selenium 打开Chrome浏览器,需下载对应的chromedriver.exe,并将chromedriver放到lib文件夹下. 打开浏览器的代码如下: package com.seleni ...

最新文章

  1. 从“琐事优先”到“要事优先”,找对方法就对了
  2. [团队公告]博客园的敏捷软件开发团队成立了
  3. 关于开始申请2010年4月份微软MVP的通知!
  4. hadoop学习--K-Means(聚类算法)
  5. Vue安装npm长时间停留WARN deprecated request@2.88.2: request has been deprecated
  6. div设置宽度,实现不等比缩放,或设置最小宽度 min-width
  7. wc命令统计文件数据数量信息
  8. 宇视科技android面试_宇视科技软件笔试面试
  9. linux裸设备大小,SUSE Linux 十 配置裸设备(raw devices)
  10. wss3.0 对文档库的一些操作
  11. 深入学习c++(虚函数遇到析构函数就退化了)
  12. Itext 中的文本信息绝对定位
  13. Visio2019安装
  14. 精心整理的10套最美Web前端新年特效--提前祝大家新年快乐
  15. mysql实现pr曲线_如何画PR curve (PR曲线)基于COCO格式数据集 在maskrcnn_benchmark中
  16. Linux系统中,让alias命令永久保存的方法!
  17. 利用Spring扩展点模拟Feign实现远程调用(干货满满)「扩展点实战系列」- 第445篇
  18. 数据库学习笔记(进阶)
  19. java 创建manifest文件_jar Manifest例子如何将Manifest文件添加到jar文件中
  20. 订单流失总金额怎么算_微信新规下增长乏力,裂变到底该怎么做?

热门文章

  1. cordova降低版本10.0.0为8.1.2
  2. Scala自动隐式转换
  3. Hadoop hdfs 使用流来上传文件代码示例
  4. JVM辅助信息参数设置
  5. oracle 查阻塞日志,通过Oracle补充日志,找到锁阻塞源头的SQL
  6. 以下python语言关键字在异常处理_【单选题】以下 Python 语言关键字在异常处理结构中用来捕获特定类型异常的选项是: ( )...
  7. 104. 软件工程的开发过程几种模型(瀑布模型、快速原型开发模型、增量模型、迭代模型、螺旋模型)
  8. python apscheduler 阻塞方式只用一个线程_框架APScheduler在python中调度使用的实例详解...
  9. 数据包过滤 系统 linux,Ubuntu16.04安装libpcap开发库对pcap文件中的数据包进行过滤...
  10. python随机取列表元素_python random从集合中随机选择元素