自动化测试(web测试selenium框架)
什么是selenium?
一个用于Web应用程序测试的工具直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。测试与浏览器的兼容性,测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能,创建衰退测试检验软件功能和用户需求。
slenium前世
早期是直接使用 javascrip 注入技术与浏览器打交道,slenium RC启动一个server 将web元素api转换为javascript。在Selenium内核启动浏览器之后注入这段Javascript,由此才实现了Selenium的目的:自动化Web操作。这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对API翻译成的Javascript质量高低。
slenium现在
Selenium2.x 提出了WebDriver的概念之后与浏览器交互利用原生的API,直接操作浏览器页面里的元素。不同的浏览器厂商对Web元素的操作和呈现一些差异直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。Selenium3.0发布后,最大更新点就是干掉了对selenium rc的支持,后面就一直是webdriver协议,
WebDriver工作流程
1、通过WebDriver创建一个浏览器服务,remote server
2、脚本启动时会在新的线程中启动一个浏览器,并绑定特定的端口,没个浏览器有不同的端口段。
3、client 创建1个session,在该session中通过http请求向remote server发送restful的请求,remote server解析请求,完成相应操作并返回response。
4、分析response,继续执行脚本还是结束执行
command.py
Command类中定义了WebDriver的一些常用的常量。
remote\webdrvier.py
所有浏览器webdrvier的基类,其中包含了所有webdriver的api接口
remote\remote_connection.py
包含启动Remote WebDrvier server,执行client请求,self._commands是selenium的核心请求参数,根据对应的Command常量,发送不同的http请求。
selenium的搭建
1.在python中安装好selenium包 : pip install selenium
2.在配置好浏览器的驱动程序根据http://www.imdsx.cn/index.php/2017/08/02/drvier/ 驱动对照表下载Chrome对驱动,并添加在PATH环境变量中,
编写以下代码能打开对应的浏览器就配置成功:
from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.imdsx.cn')
google浏览器
from selenium import webdriver driver = webdriver.Firefox() driver.get('http://www.imdsx.cn')
火狐浏览器
from selenium import webdriver driver = webdriver.Ie() driver.get('http://www.imdsx.cn')
IE浏览器
selenium定位
import selenium #引用selenium包 from selenium import webdriver#引用包的服务 driver = webdriver.Chrome()#创建浏览器 当做我们的服务端 driver.get('xxxxxxxxxxxxxxx/')#打开对应测试网站,这里的url 必须带有http # 8种单数定位方式 # id进行定位 # driver.find_element_by_id('i1').send_keys('123123')#send_keys向文本框输入数字 # class 定位方式 # driver.find_element_by_class_name('classname').send_keys('123123') # name定位方式 # driver.find_element_by_name('name').send_keys('123123') # 文案定位 # driver.find_element_by_link_text('新建标签页面').click() #.click()表示点击操作 # 文案包含定位方式 js = 'window.scrollTo(0,0);' # 将滚动条调制最上方 driver.execute_script(js)# 执行写好的js # import time # # time.sleep(2)#界面如果反应比较慢可以加载等等时间 # driver.find_element_by_partial_link_text('新建标签').click() # 标签名定位 最不常用的 # driver.find_element_by_tag_name('input').send_keys('1111') # xpath 定位 # driver.find_element_by_xpath('//*[@id="i1"]').send_keys('2222') # css id 定位 # driver.find_element_by_css_selector('#i1').send_keys('2222') # # css name 定位 # driver.find_element_by_css_selector('name').send_keys()
8种定位方式
xpath定位
xpath(xpath 定位尽量少用层级定位,如果开发更改了页面的层级,所有定位都挂了,尽量属性定位为主,层级为辅助) //* 取当前页面的全部元素 //*[@id='i1'] id 进行定位 @代表引用属性 //*[@placeholder="请通过ID定位元素"] //input[@placeholder="请通过ID定位元素"] 通过 标签名进一步缩小范围 //select[4] 如果存在不唯一的情况 可以通过角标进行取值 xpath从1开始取 //select[@size=" and @multiple="multiple"] 逻辑定位
xpath定位
当不确定时可以只用copy直接复制xpath地址(这个地址相当于层级定位最好少用)
自动化测试(web测试selenium框架)的更多相关文章
- Web测试Selenium:如何选取元素
Web测试工具Selenium:如何选取元素 2009-02-17 23:23 by 敏捷的水, 5372 阅读, 22 评论, 收藏, 编辑 selenium是一个非常棒的Web测试工具,他对Aja ...
- 自动化测试基础篇--Selenium框架设计(POM)
一.自动化测试框架 感谢木棉花的漂泊分享,内容转自链接:http://www.cnblogs.com/fengyiru6369/p/8053035.html 1.什么是自动化测试框架 简单来说,自动化 ...
- Web自动化selenium技术快速实现爬虫
selenium是大家众所周知的web自动化测试框架,主要用来完成web网站项目的自动化测试,但其实如果要实现一个web爬虫,去某些网站爬取数据,其实用selenium来实现也很方便. 比如,我们现在 ...
- 杂项-自动化测试工具:Selenium(浏览器自动化测试框架)
ylbtech-杂项-自动化测试工具:Selenium(浏览器自动化测试框架) Selenium 是一个用于Web 应用程序测试的工具.Selenium 测试直接运行在浏览器中,就像真正的用户在操作一 ...
- WEB自动化测试(UFT与Selenium)课程及视频教程
自动化测试UFT与Selenium详细视频教程科目如下: 1.自动化测试基础-2.UFT自动化测试详解-3.UFT高级测试开发-4.自动化测试框架设计-5.UFT综合实战-6自动化测试-Seleniu ...
- 软件测试漫谈(web测试,自动化测试,Jmeter)
软件测试,就是一个过程或一系列过程,用来确定计算机代码完成了其应该完成的功能不执行其不该有的操作. 简单说就是找bug的过程. 测试分类 (1)按测试方式分类:静态测试.动态测试 (2) 按测试方法分 ...
- web自动化测试(2):选择selenium优势?与PhantomJS/QTP/Monkey对比
上篇 <web自动化测试(1):再谈UI发展史与UI.功能自动化测试>,自动化测试工具众多, PC端常用的功能自动化测试工具 Selenium:开源工具集,用于回归功能测试或者系统用例说明 ...
- python selenium 自动化测试web
如何使用python完成自动化测试web页面呢?首选selenium 那基于python的selenium如何使用,下面看一段测试案例: 基于python的selenium 安装方法: pip i ...
- 《一头扎进》系列之Python+Selenium框架设计篇1-什么是自动化测试框架-价值好几K的框架,不看别后悔,过时不候
1. 什么是自动化测试框架 在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法:另一种定义认为,框架是可被应用开发者定制的 ...
随机推荐
- 【JVM系列】一步步解析java执行内幕
对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者叫底层机制)不失为一种良好的方式.在本篇文章中,将重点研究java源代码的执行原理,即从程 序员编写JAVA源代码,到最终形成产品,在整个过 ...
- 浅谈基于Intellij IDEA Maven的配置与使用
在java开发中,引入jar包的方式从种类上划分,可分为自动导入和手动导入,然而,手动导入繁琐,不是很适合当前开发模式,手动导入也被自动导入所取代. 当前,Maven和Gradle是比较主流的自动导入 ...
- Springboot 系列(十一)使用 Mybatis(自动生成插件) 访问数据库
1. Springboot mybatis 介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数获取 ...
- python -使用del语句删除对象引用
使用del语句删除一些对象引用. 注意不是把内存地址删了,你只是删除了引用,它就变为了一个可回收的对象,内存会不定期回收. del语句的语法是: del var1[,var2[,var3[....,v ...
- WKWebView讲解与使用
随着IOS开发的应用,对于网页嵌入也越来越多了,在IOS 8之前我们使用UIWebView展示详情页,自从IOS 8之后就出现了WKWebView,相比UIWebView,WKWebView优化了较多 ...
- Java高阶语法---static
背景:听说static Java高阶语法是挺进BAT必经之路. static: 静态static,很多时候会令我望文生义,但是get到了static最重要的一点,其他的理解都还ok. static最重 ...
- Spring SpringMVC MyBatis配置笔记
工程大致结构: project |-src |----pojo |--------Temp.java |----dao |--------TempDao.java |--------TempDao.x ...
- thinkphp5路由心得
路由的作用:1. 简化URL地址,方便大家记忆2. 有利于搜索引擎的优化,比如可以被百度的爬虫抓取到 优化URl1. 前后端分离修改入口文件,在public下新建admin.php文件,将下面的代码添 ...
- SharpMap和NetTopologySuite叠加分析问题
先附上实现的相交叠加分析的部分代码,然后请教个问题,希望能够得到解答. /// <summary> 执行相交叠加分析 </summary> private void Execu ...
- 解决OracleOraDb10g_home1TNSListener服务无法启动
造成OracleOraDb10g_home1TNSListener服务无法启动可能有三种情况: listener.ora文件配置有错误导致无法启动 相关环境变量没设置好 删除客户端时导致服务端相关注册 ...