前面文章,我们介绍了如何采用XPath表达式去定位网页元素,在掌握了如何抓取或者如何书写精确的XPath表达式后,我们可以开始写自己的第一个真正意义上的webui 自动化测试脚本,就相当于,你在学习Python,如何在控制台打印Hello,Python! 一样. 我们的测试用例是:打开百度首页,搜索Selenium,然后检查搜索列表,有没有Selenium这个官网链接选项. 在写自动化脚本之前,需要明确手动脚本的步骤,然后去拆分到具体没一个步骤做什么,考虑好了之后,才开始动手去写脚本.我把这个测…
1.首先制作一个html的文件,代码如下 <!DOCTYPE html> <html> <head> <title>Frame_test</title> </head> <div> <iframe id="search" src="http://www.sogou.com" width="800" height="500"> <…
Python + Selenium 自动化环境搭建过程 1. 所需组建 1.1 Selenium for python 1.2 Python 1.3 Notepad++ 作为刚初学者,这里不建议使用Python IDE工具,选择一个功能强大的记事本编辑工具就好,例如Notepad++.等以后积累足够了,需要编写更多文件,或者后期简单框架设计,我们再来介绍和使用Pycharm这个IDE工具. 2. 环境搭建 2.1 下载和安装Python 1) 下载Python 2.7.x 到 https://w…
开始写自动化脚本之前,我们先学习几个概念,在完全掌握了这几个概念之后,有助于我们快速上手,如何去编写自动化测试脚本. 元素,在这个教程系列,我们说的元素之网页元素(web element).在网页上面的文本输入框,按钮,多选,单选,标签,和文字都叫元素,总之,凡是能在页面显示的对象都可以作为页面元素对象. 元素定位,有时候也叫Locator,一个HTML页面元素,可以用很多方法去描述这个元素的位置.打个比方,生活中地址,一个大厦,正常的地址是 xx省xx市xx区xx街道xxx号,这个具体描述就是…
世界上最远的距离大概就是明明看到一个页面元素矗在那里,但是我却定位不到!! selenium定位元素的方法有很多种,像是通过id.name.class_name.tag_name.link_text等等,但是这些方法局限性太大,拿id属性来说,首先一定不会每个元素都有id属性,其次元素的id属性也不一定是固定不变的.所以这些方法了解一下即可,我们真正需要熟练掌握的是通过xpath和css定位,一般只要掌握一种就可以应对大部分定位工作了. 下面总结一下xpath的定位方法,结合自己练习的实例加深一…
本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打开fiefox浏览器.首先需要去下载一个driver插件geckodriver.exe, 下载地址https://github.com/mozilla/geckodriver/releases,下载好这个exe文件后,把这个文件放到你的python安装目录下,例如我的路径为:D:\Program Files (x86)\Python36\geckdriver.exe    .…
1.首先要下载浏览器对应的driver,并放到你的python安装目录 Chrome浏览器(chromedriver): http://npm.taobao.org/mirrors/chromedriver/   (注意下载的版本是不是跟你的浏览器版本对应) Firefox浏览器(geckdriver): https://github.com/mozilla/geckodriver/releases 2.打开Firefox from selenium import webdriverdriver…
前面文章介绍了,如何调用webdriver接口方法来打开和关闭Firefox浏览器,本文介绍如何打开IE和Chrome浏览器.web项目,需要做兼容性测试,最重要的是浏览器兼容性测试.如果只考虑windows平台,相信应该很多公司必须要测试IE.Firefox.Chrome这三大浏览器.所以webui 自动化测试,也需要在这三大浏览器上面运行和测试脚本.从前面文章,我们知道,要调用Firefox浏览器,我们需要下载geckodriver.exe这个文件,放到Python的安装路径下,例如在安装P…
本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打开fiefox浏览器.首先需要去下载一个driver插件geckodriver.exe, 下载地址https://github.com/mozilla/geckodriver/releases,下载好这个exe文件后,把这个文件放到你的python安装目录下,例如:C:\Python27\geckdriver.exe. 用Notepad++打开一个空白文件,输入如下代码,保存为…
1.所需工具包1.1Selenium for python1.2  Python  1.3  Notepad++或python IDE 2.  环境搭建2.1  下载和安装Pythonpython2.7.17    下载地址:https://www.python.org/downloads/ 安装时需要特别注意选上pip和Add python.exe tp path ,否则安装完了,还需要类似配置jdk环境变量一样把python添加到系统path中去.然后一路"next"即可完成安装.…
1.By定位和find_element_by_XXXXXX是一样的,如下图所示,定位元素的方法都是一样的 2.使用By定位代码如下所示 from selenium import webdriver from time import sleep from selenium.webdriver.common.by import By #导入By定位包 dr=webdriver.Firefox() dr.get("https://www.baidu.com") dr.find_element…
1.显示等待: from selenium import webdriver from time import sleep from selenium.webdriver.support.ui import WebDriverWait #显示等待针对元素操作 #EC预期条件类(里面主要有一些判断元素是否出现,弹出框是否出现,以及是否出现新窗口等.) #EC用的比较多的就是和显示等待一起使用,通过显示等待的方法来循环判断是否元素是否出现 from selenium.webdriver.suppor…
1.任务要求:打开百度,在百度搜索里面输入python,通过键盘复制python到搜狗搜索,粘贴到搜狗搜索框中 实现代码如下: from selenium import webdriver from selenium.webdriver.common.keys import Keys#导入键盘操作包 from time import sleep dr=webdriver.Firefox() dr.get("https://www.baidu.com/")#打开百度 dr.maximiz…
1.绕过验证码有许许多多的方法,笔者在此介绍其中的一个小方法,原理其实就是获取已登陆了之后的凭证(会话保存在本地的cookie中)再打开另一个页面的使用 2.F12(浏览器开发者调试工具)可以查看的需要的cookie值 3.实现代码 from selenium import webdriver from time import sleep dr=webdriver.Firefox() dr.get("https://www.baidu.com") dr.maximize_window(…
代码如下: from selenium import webdriver dr=webdriver.Firefox() dr.get("https://www.baidu.com") dr.get_screenshot_as_file(r"E:\ZHOU\photo\test\baidu.jpg") dr.get("https://www.360.com") dr.get_screenshot_as_file(r"E:\ZHOU\pho…
1.百度查询图片,上传文件 2.实现代码如下: from selenium import webdriverfrom time import sleepdr=webdriver.Firefox()dr.get("https://www.baidu.com")dr.maximize_window()sleep(2)dr.find_element_by_css_selector(".soutu-btn").click()#点击照相机图标sleep(2)dr.find_e…
1.弹窗如下图所示 2.处理方法 from selenium.webdriver.common.action_chains import ActionChains#导入鼠标操作包 from selenium import webdriver from time import sleep dr=webdriver.Firefox() dr.get("https://www.baidu.com") action=dr.find_element_by_css_selector("#…
1.我们打开网页有时候会开出多个页面,导致我们常常定位不到我们需要的元素,这种情况可能就是句柄的因素,如下图所示: 2.句柄切换代码如下: from selenium import webdriverfrom time import sleepdr=webdriver.Firefox()dr.get(r"https://home.firefoxchina.cn/")#打开火狐首页sleep(2)selen=dr.current_window_handle#获取当前页面(火狐首页)的句柄…
前面已经介绍了Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是入门了.接下来,我计划写第二个系列:练习篇,通过一些练习,了解和掌握一些Selenium常用的接口或者方法. 练习场景:在某一个网页上有些字段是我们感兴趣的,我们希望摘取出来,进行其他操作.但是这些字段可能在一个网页的不同地方.例如,我们需要在关于百度页面-联系我们,摘取全部的邮箱. 思路拆分: 1. 首先,需要得到当前页面的source内容,就像,打开一个页…
Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 selenium 是一个 web 的自动化测试工具,不少学习功能自动化的同学开始首选 selenium ,因为它相比 QTP 有诸多有点: 免费,也不用再为破解 QTP 而大伤脑筋 小巧,对于不同的语言它只是一个包而已,而 QTP 需要下载安装1个多 G 的程序. 这也是最重要的一点,不管你以前更熟…
Python+Selenium中级篇之8-Python自定义封装一个简单的Log类: https://blog.csdn.net/u011541946/article/details/70198676…
前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断和控制启动那个浏览器.这里我们暂时,支持三大浏览器(IE,Chrome,Firefox).这里有一个前提条件,在基础篇中,启动三大浏览器的driver文件,检查下你的Python安装路径下有没有这三个driver插件,如果没有,请回到基础篇的如何启动火狐和IE浏览器文章去看看如何做. 我们继续在test1这个包下新建一个browser_en…
在前面的基础篇的最后一篇,我们用到了输入字符和点击按钮这样的操作.用send_keys()来输入字符串到文本输入框这样的页面元素,用click()来点击页面上支持点击的元素.有时候,我们需要清除一个文本输入框内的文字,然后重新输入新的字符串,那边清除这个方法如何实现呢. 调用webdriever中clear()方法: 相关代码如下,为了演示测试效果,我们运行完脚本,不关闭浏览器: # coding=utf-8 from selenium import webdriver driver = web…
在前面一篇文章,我们介绍了如何摘取页面字段,通过正则进行匹配符合要求的字段.如果感觉有点困难,不能立马理解,没有关系.把字符串摘取放到第一篇,是因为自动化测试脚本,经常要利用字符串操作,字符串切割,查找,匹配等手段,得到新的字符串或字符串数组,然后根据新得到的字符串进行判断用例是否通过. 本篇介绍如何通过元素节点信息ID来定位该元素,使用id来定位元素虽然效率要高于XPath,但是实际测试测项目,能直接通过id定位的元素还是比较少,以下来举例百度首页搜索输入框的id定位. 脚本如下: # cod…
本文介绍如何通过Selenium方法来获取某一个元素的text属性值.在很多自动化测试脚本中,需要多次获取元素的text值,拿过来进行对比和匹配.例如,在一个登陆界面,如果不输入用户名和密码,直接点击登录,肯定会有相关错误提醒.这个错误,我们需要通过selenium抓取出来,和需求说明文档中的描述去进行匹配,如果匹配,测试成功,否则失败. 这里用百度登录举例: 需要通过Selenium脚本去自动判断是否显示错误文字“请您填写手机/邮箱/用户名” 相关脚本代码如下: # coding=utf-8i…
本文介绍如何通过webdriver方法获取当前测试页面的URL.获取当前URL有什么用处呢,一般URL可以帮助我们判断跳转的页面是否正确,或者URL中部分字段可以作为我们自动化测试脚本期待结果的一部分. 相关脚本代码如下: # coding=utf-8import timefrom selenium import webdriver driver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(6) drive…
第一篇讲了xpath定位的一些基本定位方法,这里再介绍一种:xpath轴定位,应用场景是当某个元素的各个属性及其组合都不足以定位时,那么可以利用其兄弟节点或者父节点等各种可以定位的元素进行定位. 1.xpath轴是什么 w3cschool上的定义如下: 语法 2.具体应用 (1)descendant表示取当前节点的所有后代元素 定位百度首页的“百度一下”按钮 可以看到, <input>标签的父元素是<span>标签,而<span>标签的父元素是<form>标…
目录 注释 注释的分类 注释的注意点 变量 变量的概念 变量的声明 变量的命名 变量的交换 变量的缓存机制 常量 进制 进制的转换 原码 反码 补码 六大数据类型 Number 的四大类 字符串 str 列表 list 元祖 tuple 集合 set 字典 dict 占位符 类型的转换 Number的强制转换( int flost bool coplex ) Number的自动转换( int flost bool coplex ) 容器类型数据的强制转换 ( str list tuple set…
1.正则表达式基础 1.1简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 正则表达式是含有文本和特别字符的字符串. 下图展示了使用正则表达…
文件操作 文件操作也是编程中需要熟练掌握的技能,尤其是在后台接口编写和数据分析过程中,对各种类型的文件进行操作,获取文件信息或者对信息进行存储是十分重要的.本篇博客中将主要对常见的文本格式文件和Excel文件的相关操作进行介绍. 一.文本文件 1.1 文件操作流程 1.打开文件,获得文件句柄,并赋值给一个变量 : 2.通过句柄对文件进行相关操作: 3.关闭文件 示例: # -*- coding:utf-8 -*- # author: cdc # date: 2018/8/23 f = open(…