python selenium L1

 

一、自动化测试简介

        最后验收

需求分析  - 系统测试

架构模块设计 - 集成测试

编码    - 单元测试

自动化测试的应用场景

  1  任务明确,且不会频繁变动

  2  软件需求变更少

  3  项目周期长,测试脚本可以复用

  4  有类似项目

常用的测试工具

   1    QTP : 主要是用于回归测试和测试同一软件的新版本

  2  Robot Framework : python 编写的功能自动化测试框架, 良好的可扩展性

  3  Selenium : 是一个用于 Web 应用程序测试的工具, 支持多平台、多浏览、多语言去实现自动化测试

Selenium :

  1  开源、免费

  2  支持主流浏览器: FireFox , Chrome , IE

  3  跨平台: Windows , Linux , Mac

  4  多语言: Java , Python ,Ruby , Php , JS

  5  对web支持良好, 丰富简单的API

  

二、web 调试工具和环境搭建

  1  环境安装

    python + pip + selenium

    安装Chrome webdriver 

      http://blog.csdn.net/zhaoyabei/article/details/52355021

  2  firefox 前端工具介绍

    fireBug:FireFox 浏览器下的一套开发类插件 , 查看页面上的元素,从而根据其属性进行定位

  3  html , js , xml , css

三、元素定位及操作

获取元素

元素名称 webdriver API 说明
id find_element_by_id()  
name find_element_by_name()  
class name find_element_by_class_name()  
tag name  find_element_by_tag_name()  
link text find_element_by_link_text()  
partial link text find_element_by_partial_link_text()  
xpath find_element_by_xpath()  
css selector find_element_by_css_selector()  

元素操作

方法 说明
clear 清除元素内容
send_keys 模拟按键输入
click 点击
submit 提交表单

XPath 用于在 XML 文档中通过元素和属性进行导航

  xpath节点类型: 

    元素,属性,文本,命名空间,指令处理,注释及文档,

    xpath:通过路径表达式从XML文档中选取节点或节点设置

表达式 结果 说明
/xxx 选取根节点xxx  
/xxx/yyy 根据绝对路径选择元素  
//xxx 整个文档扫描,找到所有xxx元素  
//xxx/yyy 所有父元素为xxx的yyy元素  
. 选取当前节点的父元素节点  
.. 选取父元素地址  
//xxx[@id]  选取所有xxx元素中有id属性的元素  
//xxx[@id=yyy]  选取所有xxx元素id属性为yyy的元素  

    xpath:通过路径表达式从XML文档中选取节点或节点设置

表达式 结果
//*[count(xxx)=2] 统计xxx元素个数=2的节点
//*[local-name()='xxx'] 找到tag为xxx的元素
//*[starts-with(local-name(),'x')] 找到所有tag以x开头的元素
//*[contains(local-name(),'x')] 找到所有tag包含x的元素
//*[string-length(local-name()) = 3] 找到所有tag长度为3的元素
//xxx | //yyy 多个路径查找

四、ActionChains类与输入事件

  1  from selenium.webdriver.common.action_chains import ActionChains

  2   ActionChains(driver):用于生成模拟用户行为

  3   perform():执行存储行为

    鼠标事件
表达式 说明
context_click 右击事件
double_click 双击事件
drag_and_drop 拖动
move_to_element() 鼠标停在一个元素上
click_and_hold 按下鼠标左键在一个元素上

键盘事件:send_keys()
from selenium.webdriver.common.keys import Keys
表达式 说明
send_kyes(Kyes.BACK_SPACE) 退格键
send_kyes(Kyes.CONTRL, 'a') 全选
send_kyes(Kyes.CONTRL, 'v') 粘贴
send_kyes(Kyes.CONTRL, 'c') 复制
send_kyes(Kyes.CONTRL, 'x') 剪切
send_kyes(Kyes.ENTER) 回车

五、 对话框和多窗口

测试脚本中的等待方法

  1  等待是为了使脚本执行更加稳定

  2  常用的休眠方式:time模块的sleep方法

selenium模块中的等待方法
implicitly_wait() 设置webdriver等待时间
WebDriverWait 等待条件满足或者超时后退出 , from selenium.webdriver.support.ui import WebDriverWait

  Alter对象
switch_to_alert() 切到alter,返回一个alter对象
accept 确认
dismiss 取消
send_keys() 有输入框才能使用,否则报错

EG :

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()
#browser.quit()

  

原文地址:https://www.cnblogs.com/zsr0401/p/6478451.html