摘要:前言 如何判断一个元素是否存在,如何判断alert弹出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方法。 expected_conditions一般也简称EC 一、查看源码 方式一、打开python里这个目录可以找到:
阅读全文
摘要:前言 验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的。 对于验证码,要么是让开发在测试环境弄个万能的验证码,如:1234,要么就是尽量绕过去,如本篇介绍的添加cookie的方法。 一、fiddler抓包 1.前一篇讲到,登录后会生成一个已登
阅读全文
摘要:前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录。 登录后换账号登录时候,也可作为后置条件去删除cookie然后登录下个账号 一、获取cookies:get_cookies() 1.获取cookies方法直接
阅读全文
摘要:前言 在脚本中加入太多的sleep后会影响脚本的执行速度,虽然implicitly_wait()这种方式隐式等待方法一定程度上节省了很多时间。 但是一旦页面上某些js无法加载出来(其实界面元素已经出来了),左上角那个图标一直转圈,这时候会一直等待的。 一、WebDriverWait参数解释 1.We
阅读全文
摘要:前言 如何判断一个元素是否存在,这个方法在selenium里面没有的,需要自己写的。 元素不存在的话,操作元素会报错,或者元素有多个,不唯一的时候也会报错。下面介绍两种判断元素存在的方法。 一、find_elements方法判断 1.find_elements方法是查找页面上所有相同属性的方法,这个
阅读全文
摘要:前言 通常在做断言之前,都要先获取界面上元素的属性,然后与期望结果对比。本篇介绍几种常见的获取元素属性方法。 一、获取页面title 1.直接driver.title 二、获取元素的文本 1.HTML一对标签中的内容,可以使用driver.text获取文本 # coding:utf-8 from s
阅读全文
摘要:前言 百度输入后,输入框下方的联想词如何定位到,这个其实难度不大,用前面所讲的元素定位完全可以定位到的。 下面以百度输入框输入关键字匹配后,打印出联想词汇。 一、定位输入框联想词 1.首先在百度输入框输入关键词,如‘博客’,然后输入框下方会自动匹配出关键词。 2.这时候鼠标悬停在某个联想词上,点击右
阅读全文
摘要:前言 文件上传是web页面上很常见的一个功能。 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决; 另外一种非input标签实现起来比较困难 下面以开源系统OPMS为例,通过send_keys()方法解决文件上传问题 一、文件上传 1.先定位到
阅读全文
摘要:前言 访问某个链接时,可能会遇到单个窗口多个标签的情况,如,百度页面,点击新闻按钮,下面介绍2种方式 方式一、获取最后打开的标签(句柄),切换句柄 #coding:utf-8 from selenium import webdriver import time driver=webdriver.Ch
阅读全文
摘要:前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见。本篇详细讲解table表格如何定位。 一、认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table。 2.源码如下: <!DOCTYPE html> <meta charset="UTF-8"> <
阅读全文
摘要:前言 前面都是通过官网或他人博客学些selenium,介绍的一些selenium api使用方法,那么selenium的api到底有多少呢?本篇介绍如何查看完整的selenium api pydoc是Python自带的模块,主要用于python模块中自动生成文档,这些文档可以基于文本呈现的、也可以生
阅读全文
摘要:前言 前面介绍过js解决浏览器滚动条的问题,生活总是多姿多彩,有的滚动条就在页面上,这时候就得使用js了 一、内嵌滚动条 1.下面这张图就是内嵌div带有滚动条的样子 2.页面源码如下: <!DOCTYPE html> <meta charset="GBK"> <!-- for HTML5 -->
阅读全文
摘要:前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题。 基本思路:先用js去掉readonly属性,然后直接输入日期文本内容 一、日历控件 1.打开12306的车票查询界面
阅读全文
摘要:前言 富文本编辑框是做web自动化最常见的场景,本篇以开源系统OPMS的添加新项目为例,解决如何定位富文本,输入文本内容 一、登录 # coding:utf-8 from selenium import webdriver driver=webdriver.Chrome() host="http:/
阅读全文
摘要:前言 在测试时,有时会遇到单选框和复选框的操作。操作方式;先定位,再点击;复选框可以先判断再点击。 一、认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.单选框是圆的;复选框是方的 二、radio和checkbox源码 1.上图的html源码如下,把下面这段复制下来,写到文本里,后缀改成.
阅读全文
摘要:前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要Window对象。 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。 这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。 滚动条是无法直接使用工具来定位的。se
阅读全文
摘要:前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert。先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决。 alerts\confirm\prompt弹出框操作主要方法有: text:获取文本值 accept():点击“确认” dismiss():
阅读全文
摘要:前言 下面以百度高级搜索下拉选项框为案例,详细介绍select下拉框相关的操作方法。 一、认识select 1.打开百度-设置-高级搜索界面,如下图所示 2.时间就是select选项框,打开F12定位, 3.选项有5个 二、定位 1.基本思路:先定位select框,再定位里面的选项 2.代码如下 #
阅读全文
摘要:前言 163邮箱登录的时候,发现不管怎么定位都无法定位到,到底是什么原因呢?本篇详细介绍iframe相关的切换 以https://mail.163.com/为案例,详细介绍switch_to_frame使用方法 一、frame和iframe区别 Frame与iframe两者可以实现的功能基本相同,不
阅读全文
摘要:前言 有些页面的链接打开后,会重新打开一个窗口/标签页,对于这种情况,屏幕会聚焦在新窗口或新标签页上,但WebDriver 不知道操作系统认为哪个窗口是活动的。要使用新窗口,您需要切换到它。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。当然,我们也可以通过j
阅读全文