uniquefu Python+Selenium学习--select】的更多相关文章

场景 在处理下拉框(select)的时候selenium给我们提供了一系列的便捷方法,我们只需要使用selenium.webdriver.support.select.Select类来稍微封装一下就好了. 下面是我们经常会用到的一些方法 options: 返回下拉框里所有的选项 all_selected_options: 返回所有选中的选项 select_by_value(value): 通过option的value值来选择 select_by_index(index) 通过option的顺序来…
初入python+selenium学习之路,总会遇到这样那样的问题.IndentationError: unexpected indent,这个坑我已经踏进数次了,索性记录下来.都知道Python对代码格式要求挺严格,这个message是在告诉你:你的格式有问题,要检查下tab和空格,可能是没对齐 解决过程: 根据错误位置提示,发现是这个函数除了问题,如下图: 红框圈出的缩进没有对齐,对齐之后就OK了 执行结果成功:  我踏过的,是不曾虚度的昨天,我去向的 ,永远是比今天更好的远方…
前言 一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库.测试数据源.测试对象识别标准,以及种可重用的模块.自动化测试框架在发展的过程中经历了几个阶段,模块驱动测试.数据驱动测试.对象驱动测试.本章就带领读者了解这几种测试模型 1. 自动化测试模型介绍 自动化测试模型是自动化测试架构的基础,自动化测试的发展也经历的不同的阶段,不断有新的模型(概念)被提出,了解和使用这些自动化模型将帮助我们构建一个灵活可维护性的自动化架构 1.1 线性测试 通过录制或编写脚本,一个脚本完成一个场…
读取txt的内容并用百度查找搜索 1 # coding = utf-8 2 3 from selenium import webdriver 4 import time 5 6 # 打开浏览器 7 dr = webdriver.Firefox() 8 dr.get("http://www.baidu.com") 9 10 ''' 11 # 读取列表的 12 words = ['python', 'selenium', 'webdriver'] 13 14 for word in wor…
前言 在脚本运行完成之后,除了在log.txt 文件看到运行日志外,我们更希望能生一张漂亮的测试报告来展示用例执行的结果.        HTMLTestRunner 是Python 标准库的unittest 模块的一个扩展.它生成易于使用的HTML 测试报告.HTMLTestRunner 是在BSD 许可证下发布.        首先要下HTMLTestRunner.py 文件(百度自行搜索). 代码 #!/usr/bin/env python # -*- codinfg:utf-8 -*-…
前言 Webdriver 提供错误截图函数get_screenshot_as_file(),可以帮助我们跟踪bug,在脚本无法继续执行时候, get_screenshot_as_file()函数将截取当前页面的截图保存到指定的位置,这是一个非常棒的功能,下面实例展示get_screenshot_as_file()函数的使用. 代码 #!/usr/bin/env python # -*- codinfg:utf-8 -*- ''' @author: Jeff LEE @file: 异常截图.py…
场景 有时候我们需要验证浏览器中是否存在某个cookie,因为基于真实的cookie 的测试是无法通过白盒和集成测试完成的.webdriver 可以读取.添加和删除cookie 信息.webdriver 操作cookie 的方法有: get_cookies() 获得所有cookie 信息 get_cookie(name) 返回特定name 有cookie 信息 add_cookie(cookie_dict) 添加cookie,必须有name 和value 值 delete_cookie(name…
场景 有时候web 页面上的元素并非直接可见的,就算把浏览器最大化,我们依然需要拖动滚动条才能看到想要操作的元素,这个时候就要控制页面滚动条的拖动,但滚动条并非页面上的元素,可以借助JavaScript是来完成操作.一般用到操作滚动条的会两个场景: 注册时的法律条文的阅读,判断用户是否阅读完成的标准是:滚动条是否拉到最下方 要操作的页面元素不在视觉范围,无法进行操作,需要拖动滚动条 代码 #!/usr/bin/env python # -*- codinfg:utf-8 -*- ''' @aut…
场景 我们在测试一个web 应用时,经常出现翻页的情况,下面介绍翻页场景 代码 #!/usr/bin/env python # -*- codinfg:utf-8 -*- ''' @author: Jeff LEE @file: 翻页.py @time: 2018-09-26 11:14 @desc: ''' from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChain…
场景 下拉框也是web 页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框:这样的二次定位 下拉框一般有以下两种方式: 鼠标移上去直接弹出的,那么我们可以使用move_to_element()进行操作,在上一章alert/confirm/prompt处理章节已经介绍 下拉框处理是两次点击,第一点击弹出下拉框,第二次点击操作元素,下面将介绍这种 代码 #!/usr/bin/env python # -*- codinfg:ut…
场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的元素 代码 #!/usr/bin/env python # -*- codinfg:utf-8 -*- ''' @author: Jeff LEE @file: 多窗口处理.py @time: 2018-09-25 10:57 @desc: ''' from selenium import webd…
场景 在web 应用中经常会出现frame 嵌套的应用,假设页面上有A.B 两个frame,其中B 在A 内,那么定位B 中的内容则需要先到A,然后再到B.      switch_to_frame 方法可以把当前定位的主体切换了frame 里.怎么理解这句话呢?我们可以从frame的实质去理解.frame 中实际上是嵌入了另一个页面,而webdriver 每次只能在一个页面识别,因此才需要用switch_to.frame 方法去获取frame 中嵌入的页面,对那个页面里的元素进行定位.   …
场景 sleep():设置固定休眠时间.python 的time 包提供了休眠方法sleep() ,导入time 包后就可以使用sleep()进行脚本的执行过程进行休眠.implicitly_wait():是webdirver 提供的一个超时等待.隐的等待一个元素被发现,或一个命令完成.如果超出了设置时间的则抛出异常.WebDriverWait():同样也是webdirver 提供的方法.在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常. 代码 #!…
场景 前面已经讲解了如果定位对象,定位之后需要对这个对象进行操作.是鼠标点击还是键盘输入,取决于我们定位的对象缩支持的操作. webdriver中比较常用的操作元素的方法有下面几个: clear                  清除元素的内容 send_keys               在元素上模拟按键输入 click                          单击元素 submit                      提交表单 实例 #!/usr/bin/env pytho…
场景 这两个功能一般不太常用.所能想到的场景大概也就是在几个页面间来回跳转,省去每次都get url. 代码 #!/usr/bin/env python # -*- coding:utf-8 -*- ''' Created on 2018/5/9 11:26 @author: Jeff Lee @file: 前进和后退.py ''' from selenium import webdriver import time print('打开浏览器') cl = webdriver.Firefox()…
一.浏览器操作相关 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() # 窗口最大化 driver.set_window_size(400,800) # 设置窗口大小 driver.back() # 回退一层 driver.forward() # 前进一层 driver.quit() # 退出浏览器 driver.close() # 关闭浏览器 二.元素定位 # 根据id定位 d…
一.安装selenium 命令安装selenium库 :pip  install -U selenium 查看selenium是否安装成功:pip list PS:有时会有异常,安装失败,可以尝试去selenium官网下载,selenium的资源包.下载地址:https://www.seleniumhq.org/download/,把包放到目录D:\python\Python36\Lib\site-packages下解压, 进入路径D:\python\Python36\Lib\site-pack…
1. 前言 前面讲解了那么多selenium的基础知识,下面用一个简单案例来介绍,此案例主要实现,运行测试,自动生成html报告,并发生邮件. 2. 测试案例 2.1 目录结构介绍 conf:配置信息,目前只增加了邮箱配置相关信息,可以根据需要增加其他配置 data:测试数据,由于是简单介绍,暂空缺,读者可以在此文件夹增加数据,例如百度需要搜索的数据,或登录测试的用户名或密码等 log:运行日志及错误截图(截图可以另外开一个目录) reports:测试报告 runner:所有测试入口 test_…
场景 webdriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中,下面以firefox及chrome为例 代码 Firefox下载 为了让Firefox浏览器能实现文件下载,需要通过FirefoxProfile()对其做一些设置. browser.download.foladerList :设置成0代表下载到浏览器默认下载路径,设置成2则可以保存到指定的目录. browser.download.manager.showWhenStarting  :是否显示…
场景 文件上传操作也比较常见功能之一,上传功能操作webdriver 并没有提供对应的方法,关键上传文件的思路.上传过程一般要打开一个系统的window 窗口,从窗口选择本地文件添加.所以,一般会卡在如何操作本地window 窗口.其实,上传本地文件没我们想的那么复杂:只要定位上传按钮,通send_keys 添加本地文件路径就可以了.绝对路径和相对路径都可以,关键是上传的文件存在. 代码 upload_file.html <html> <head> <meta http-eq…
场景 webdriver 中处理JavaScript 所生成的alert.confirm 以及prompt 是很简单的.具体思路是使用switch_to.alert()方法定位到alert/confirm/prompt.然后使用text/accept/dismiss/send_keys 按需进行操做. text                        返回alert/confirm/prompt 中的文字信息 accept                   点击确认按钮 dismiss …
场景 页面上弹出的对话框是自动化测试经常会遇到的一个问题:很多情况下对话框是一个iframe,如之前iframe介绍的例子,处理起来稍微有点麻烦:但现在很多前端框架的对话框是div 形式的,这就让我们的处理变得十分简单. 代码 #!/usr/bin/env python # -*- codinfg:utf-8 -*- ''' @author: Jeff LEE @file: 对话框.py @time: 2018-09-25 9:52 @desc: ''' from selenium import…
场景 我们在实际的测试工作中,有时候需要使用tab键将焦点移动到下一个元素,用于验证元素的排序是否正确.webdriver的Keys()类提供键盘上所有的操作,甚至可以模拟一些组合键的操作,如Ctrl+A,Ctrl+C/Ctrl+V等,在某些更复杂的情况下,还会出现使用send_keys()来模拟上下键来操作下拉列表的情况 代码 #!/usr/bin/env python # -*- codinfg:utf-8 -*- ''' @author: Jeff LEE @file: 键盘事件.py @…
场景 前景讲解了鼠标的click()事件,而我们在实际的web产品测试中,有关鼠标的操作,不仅仅只有单击,有时候还包括右击,双击,拖动等操作,这些操作包含在ActionChains类中. ActionChains类鼠标操作的常用方法: context_click()                           右击 double_click()                           双击 drag_and_drop()                      拖动 mov…
场景 从上一节的例子中可以看出,webdriver可以很方便的使用find_element方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要使用find_elements方法. 定位一组对象一般用于以下场景: 批量操作对象,比如将页面上所有的checkbox都勾上 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象.比如定位出页面上所有的checkbox,然后选择最后一个 代码 S6.html <!DOCTYPE html> <html lang="…
场景 测试对象的定位和操作是webdriver的核心内容,其中操作又是建立在定位的基础之上,因此对象定位就越发显得重要了. 定位对象的目的一般有下面几种 操作对象 获得对象的属性,如获得测试对象的class属性,name属性等等 获得对象的text 获得对象的数量 webdriver提供了一系列的对象定位方法,常用的有以下几种 id name class name link text partial link text tag name xpath css selector 代码 login.h…
场景 测试中,访问1个页面然后判断其title是否符合预期是很常见的1个用例,所谓用例不够,title来凑就是这个道理.更具体一点,假设1个页面的title应该是'hello world', 那么可以写这样的一个用例:访问该页面,获取该页面的title,判断获取的值是否等于'hello world'. 获取当前页面的url也是非常重要的一个操作.在某些情况下,你访问一个url,这时系统会自动对这个url进行跳转,这就是所谓的'重定向'.一般测试重定向的方法是访问这个url,然后等待页面重定向完毕…
场景 web UI测试里最简单也是最基本的事情就是访问1个链接了. 在python的webdrive中,访问url时应该使用get方法. 代码 #!/usr/bin/env python # -*- coding:utf-8 -*- ''' Created on 2018/5/9 11:13 @author: Jeff Lee @file: 访问链接.py ''' from selenium import webdriver import time print('打开浏览器') cl = web…
场景 设置浏览器窗口的大小有下面两个比较常见的用途: 在统一的浏览器大小下运行用例,可以比较容易的跟一些基于图像比对的工具进行结合,提升测试的灵活性及普遍适用性.比如可以跟sikuli结合,使用sikuli操作flash: 在不同的浏览器大小下访问测试站点,对测试页面截图并保存,然后观察或使用图像比对工具对被测页面的前端样式进行评测.比如可以将浏览器设置成移动端大小(320x480),然后访问移动站点,对其样式进行评估: 代码 #!/usr/bin/env python # -*- coding…
首先需要倒入Select模块: from selenium.webdriver.support.select import Select 常用方法: 通过索引定位:select_by_index() 通过value值定位:select_by_value() 通过文本值定位:select_by_visible_text() 其他方法: 取消所有选项:deselect_all() 取消对应index选项:deselect_by_index() 取消对应value选项 :deselect_by_val…