对象(元素)的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,因此元素定位就显得非常重要. (本书中用到的对象与元素同为一个事物)一个对象就像是一个人,他会有各种的特征(属性) ,如比我们可以通过一个人的身份证号.姓名或者他的住址找到这个人.那么一个元素也有类似的属性,我们可以通过这种唯一区别于其它元素的属性来定位这个元素.当然,除了要操作元素时需要定位元素外,有时候我们只是为了获得元素的属性(class 属性,name 属性) .text 或数量也需要定位元素.webdri…
一般来说,所有有趣的操作与页面交互都将通过 WebElement 接口,包括上一节中介绍的对象定位,以及本节中需要介绍的常对象操作.webdriver 中比较常用的操作元素的方法有下面几个: clear 清除元素的内容,如果可以的话 send_keys 在元素上模拟按键输入 click 单击元素 submit 提交表单3.1.登录实例下面以快播私有云登录实例来展示常见元素操作的使用:#coding=utf-8from selenium import webdriverdriver = w…
前面例子中我们已经学习到可以用 click()来模拟鼠标的单击操作,而我们在实际的 web 产品测试中 发现,有关鼠标的操作,不单单只有单击,有时候还要和到右击,双击,拖动等操作,这些操作包含在ActionChains 类中.ActionChains 类鼠标操作的常用方法: context_click() 右击 double_click() 双击 drag_and_drop() 拖动 move_to_element() 鼠标悬停在一个元素上 click_and_hold() 按下鼠标左…
webdriver 可以很方便的使用 find_element 方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,WebElement 接口同样提供了定位一组元素的方法 find_elements.定位一组对象一般用于以下场景: 批量操作对象,比如将页面上所有的 checkbox 都勾上 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象.比如定位出页面上所有的checkbox,然后选择最后一个.checkbox.html<html><head><met…
在 web 应用中经常会出现 frame 嵌套的应用,假设页面上有 A.B 两个 frame,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B.switch_to_frame 方法可以把当前定位的主体切换了 frame 里.怎么理解这句话呢?我们可以从 frame的实质去理解.frame 中实际上是嵌入了另一个页面,而 webdriver 每次只能在一个页面识别,因此才需要用 switch_to.frame 方法去获取 frame 中嵌入的页面,对那个页面里的元素进行定位…
在实际的项目测试中,经常会有这样的需求:页面上有很多个属性基本相同的元素 ,现在需要具体定位到其中的一个.由于属性基本相当,所以在定位的时候会有些麻烦,这时候就需要用到层级定位.先定位父元素,然后再通过父元素定位子孙元素.level_locate.html<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title…
当 webdriver 遇到没法完成的操作时,笔者可以考虑借用 JavaScript 来完成,比下下面的例子,通过 JavaScript 来隐藏页面上的元素.除了完成 webdriver 无法完成的操作,如果你熟悉 JavaScript的话,那么使用 webdriver 执行 JavaScript 是一件非常高效的事情.webdriver 提供了 execute_script() 接口用来调用 js 代码.js.html<html><head><meta http-equiv…
获取测试对象的属性能够帮我们更好的进行对象的定位.比如页面上有很多标签为 input 元素,而我们需要定位其中 1 个有具有 data-node 属性不一样的元素.由于 webdriver 是不支持直接使用 data-node 来定位对象的,所以我们只能先把所有标签为 input 都找到,然后遍历这些 input,获取想要的元素.例如,有下面一组元素:<input type="checkbox" data-node="594434499" data-conve…
webdriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中.要想下载文件,首选要先确定你所要下载的文件的类型.要识别自动文件的下载类型可以使用 curl ,如图3.16:图 3.16curl 是利用 URL 语法在命令行方式下工作的开源文件传输工具.Content-Type ,内容类型,一般是指网页中存在的 Content-Type ,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式.什么编码读取这个文件.另一种方法是使用 requests 模块…
文件上传操作也比较常见功能之一,上传功能操作 webdriver 并没有提供对应的方法,关键上传文件的思路.上传过程一般要打开一个系统的 window 窗口,从窗口选择本地文件添加.所以,一般会卡在如何操作本地 window 窗口.其实,上传本地文件没我们想的那么复杂:只要定位上传按钮,通 send_keys 添加本地文件路径就可以了.绝对路径和相对路径都可以,关键是上传的文件存在.下面通地例子演示操作过程.upload_file.html<html><head><meta…
对于 web 页面上的分页功能,我们一般做做以下操作:  获取总页数  翻页操作(上一页,下一页) 对于有些分页功能提供上一页,下一页按钮,以及可以输入具体页面数跳转功能不在本例的讨论范围. .... <select id="pageElm_a74e_ce2c" class="yem" action="page" data-page="5"> <option value="1">…
下拉框也是 web 页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框:这样的二次定位,我们在前面的例子中已经有过使用,下面通过一个具体的例子来说明具体定位方法.drop_down.html<html><body><select id="ShippingMethod" onchange="updateShipping(options[selectedIndex]);"…
webdriver 中处理 JavaScript 所生成的 alert.confirm 以及 prompt 是很简单的.具体思路是使用switch_to.alert()方法定位到 alert/confirm/prompt.然后使用 text/accept/dismiss/send_keys 按需进行操做. text 返回 alert/confirm/prompt 中的文字信息. accept 点击确认按钮. dismiss 点击取消按钮,如果有的话. send_keys 输入值,这个 a…
页面上弹出的对话框是自动化测试经常会遇到的一个问题:很多情况下对话框是一个 iframe,如上一节中介绍的例子,处理起来稍微有点麻烦:但现在很多前端框架的对话框是 div 形式的,这就让我们的处理变得十分简单. 图 3.9图 3.9 为百度首页的登录对话框,下面通过脚本对百度进行登录操作:#coding=utf-8from selenium import webdriverdriver = webdriver.Firefox()driver.get("http://www.baidu.com/&…
有时候为了保证脚本运行的稳定性,需要脚本中添加等待时间.sleep(): 设置固定休眠时间. python 的 time 包提供了休眠方法 sleep() , 导入 time 包后就可以使用 sleep()进行脚本的执行过程进行休眠.implicitly_wait():是 webdirver 提供的一个超时等待.隐的等待一个元素被发现,或一个命令完成.如果超出了设置时间的则抛出异常.WebDriverWait():同样也是 webdirver 提供的方法.在设置时间内,默认每隔一段时间检测一次当…
1.1.浏览器最大化在统一的浏览器大小下运行用例,可以比较容易的跟一些基于图像比对的工具进行结合,提升测试的灵活性及普遍适用性.比如可以跟 sikuli 结合,使用 sikuli 操作 flash.#coding=utf-8from selenium import webdriverdriver = webdriver.Firefox()driver.get("http://www.baidu.com")print "浏览器最大化"driver.maximize_w…
浏览器操作 driver.maximize_window() #浏览器最大化 driver.set_window_size(480,800) #设置浏览器宽,高 driver.back() & driver.forward() #后退,前进 定位 find_element_by_id() find_element_by_name() find_element_by_class_name() find_element_by_tag_name() find_element_by_link_text(…
from selenium import webdriver from selenium.webdriver.common.by import By import os,time driver = webdriver.Chrome() file_html = "file:///" + os.path.abspath("C:/Users/XXXXXX/Desktop/PY_file/html/checkbox/index.html") driver.get(file_…
对于 web 应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性.但对于测试人员来说,不管是进行性能测试还是自动化测试都是一个棘手的问题.图 3.20下面笔者根据自己的经验来谈一下处理验证码的几种方法.去掉验证码这是最简单的方法,对于开发人员来说,只是把验证码的相关代码注释掉即可,如果是在测试环境,这样做可省去了测试人员…
有时候我们需要验证浏览器中是否存在某个 cookie,因为基于真实的 cookie 的测试是无法通过白盒和集成测试完成的.webdriver 可以读取.添加和删除 cookie 信息.webdriver 操作 cookie 的方法有: get_cookies() 获得所有 cookie 信息 get_cookie(name) 返回特定 name 有 cookie 信息 add_cookie(cookie_dict) 添加 cookie,必须有 name 和 value 值 delete_…
有时候 web 页面上的元素并非直接可见的,就算把浏览器最大化,我们依然需要拖动滚动条才能看到想要操作的元素, 这个时候就要控制页面滚动条的拖动, 但滚动条并非页面上的元素, 可以借助 JavaScript是来完成操作.一般用到操作滚动条的会两个场景: 注册时的法律条文的阅读,判断用户是否阅读完成的标准是:滚动条是否拉到最下方. 要操作的页面元素不在视觉范围,无法进行操作,需要拖动滚动条用于标识滚动条位置的代码<body onload= "document.body.scrollTop…
有时候我们在测试一个 web 应用时会出现多个浏览器窗口的情况,在 selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的元素.图 3.10要想在多个窗口之间切换,首先要获得每一个窗口的唯一标识符号(句柄) .通过获得的句柄来区别分不同的窗口,从而对不同窗口上的元素进行操作.#coding=utf-8from selenium import webdriverimport timedriver = webdriver.F…
感谢CSDN:huilan_same大神 网页地址:http://blog.csdn.net/huilan_same/article/details/52200586…
2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是webdriver框架的API.本篇主要讲如何用Python调用webdriver框架的API,对浏览器做一些常规的操作,如打开.前进.后退.刷新.设置窗口大小.截屏.退出等操作. 2.1.1 打开网页 1.从selenium里面导入webdriver模块2.打开Firefox…
由于web自动化常常需要控制浏览器行为和操作页面元素,相关函数又比较多,于是再此记下一份Webdriver API查阅文档以备不时之需. 参考:虫师<Selenium2自动化测试实战>,和http://selenium-python.readthedocs.io/api.html #coding=utf-8 from selenium import webdriver driver=webdriver.Firefox() driver.get('http://www.baidu.com/')…
小编整理了目前学习的Python+selenium常用的一些方法函数,以后有新增再随时更新. 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: maximize_window() 设置窗口参数:set_window_size(600,800) 后退到前一页: back() 前进到后一页: forward() 刷新页面: refresh() 元素定位: id定位:find_element_by_id() name定位:find_…
1.简单对象的定位-----自动化测试的核心 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪个街道.楼层.门牌找到这个人.那么一个对象也有类似的属性,我们可以通过这个属性找到这对象. 2.webdriver提供了一系列的对象定位方法,常用的有以下几种 · id · name · class name · link text · partial link text · …
一.以下截图为用FireBug定位的用火狐(Firefox)浏览器打开的百度首页,下面所讲述的八种定位方法,就是以该截图中的百度输入框为例子. ①.FireBug是Firefox浏览器下的开发类插件,通过该插件可以查看HTML.CSS.Javascript控制台.网络状况监视器.Cookies,具体内容如下面截图中的工具栏. 通过它可以方便的查看页面上的元素,根据元素路径或是标签或是属性进行定位. FireBug安装方式:Firefox浏览器的菜单栏中选中tools(工具)-->add-ons…
转载来自: http://www.cnblogs.com/fnng/p/3160606.html Webdriver Selenium 是 ThroughtWorks 一个强大的基于浏览器的开源自动化测试工具,它通常用来编写 Web 应用的自动化测试. Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver​(WebDriver 曾经是 Selenium 的竞争对手).也就是说 Selenium 2 是 Selenium 和 W…
第一节 环境搭建准备工具如下:-------------------------------------------------------------下载 python[python 开发环境]http://python.org/getit/下载 setuptools [python 的基础包工具]http://pypi.python.org/pypi/setuptools下载 pip [python 的安装包管理工具]https://pypi.python.org/pypi/pip-----…