
selenium
我不管,我爱测试
文笔不好,看不懂或者不理解欢迎提问,看到评论必回复
展开
-
web自动化之xpath元素的定位
首先我们先打开谷歌的F12开发者模式,然后我们在开发者模式使用ctr+F,就会出现xpath,我们以百度举例假如我输入 //link[@rel=‘dns-prefetch’],那它下面有个1of8.。表示的是有这个属性有8个相同的地方xpath分为:绝对定位、相对定位、部分定位、层级定位1.绝对定位:严格按照路径和位置来定位元素 以/开头 父/子关系比如百度输入框,我们开发者模式的小...原创 2019-05-25 14:34:23 · 925 阅读 · 0 评论 -
python selenium - web自动化环境搭建
转载自:https://www.cnblogs.com/Simple-Small转载 2019-05-25 14:38:00 · 158 阅读 · 0 评论 -
web自动化之基础定位方式
简单的写写 id,class,name,text定位吧,xpath上片文章详细解答了在学习html页面的同学都知道,html里的标签属性有id、class、name、text等等吧?接下来我们就简单的讲讲如何定位id、class等#首先先导入包from selenium import webdriver#其次打开浏览器,访问百度driver = webdriver.Chrome()...原创 2019-05-29 16:41:12 · 634 阅读 · 2 评论 -
web自动化之三大等待
selenium里面给我们提供了三个等待方法: 1.强制等待sleep 2.隐性等待.implicitly_wait() 3.显性等待 WebDriverWait().until()/until_not (重点讲)1.强制等待 sleep导入impor time 在代码里面是time.sleep(*),这里的 * 是已秒来计算,假如你输入的1,那么就是等待1秒,输入0.5,那么就是强...原创 2019-05-29 16:52:52 · 912 阅读 · 0 评论 -
web自动化之浏览器窗口
在我们与浏览器交互当中,难免会遇到打开浏览器新窗口的存在,那么我们如何来进行新窗口的切换呢?方法有两种方式一: 打开新窗口,获取所有窗口 handles = driver.window_handles 切换新窗口 driver.switch_to.window(handles[-1]) #这里的-1只是它新窗口的下标标识具体代码如下:from selenium import web...原创 2019-05-29 16:58:29 · 679 阅读 · 0 评论 -
web自动化之iframe 页面的操作
前言:ifrname是啥?ifrname是嵌套到html里的另一个页面,点击对应的功能就会跳转到新的html里。一般遇到这种,我们代码不对ifrname页面进行操作的话,那我们定位是对它不起作用的。那我们怎么知道我们所在的元素在ifrname里呢?我们以QQ官网登录来做示范我们点击登录。然后定位一下登录里的“账号密码登录”,发现下面有ifrname。就足以证明它在ifrname页面里。或......原创 2019-05-31 22:44:04 · 1561 阅读 · 0 评论 -
web自动化之alert弹框
什么是alert弹框呢?F12定位不到元素的弹出框,一般称之为alert弹出框,因为它不是html元素。如下图: 这种F12定位不到针对这种我们怎么做呢?哎~ selenium里提供了switch_to.alert方法供我们使用。具体代码如下from selenium import webdriverfrom selenium.webdriver.support.wait impor...原创 2019-05-31 22:47:04 · 4015 阅读 · 0 评论 -
web自动化之鼠标悬停事件
前言:我们在操作浏览器的时候,都需要一些鼠标悬停才能显示的下拉框或者选择下拉框的内容。鼠标操作类是 ActionChains鼠标事件有: 1. 悬浮 - 用的最多最多 move_to_element 2. 右键 context_click 3. 点击 click 4. 双击 double_click 5. 拖拽 drag_and_drop 6. 滚动 — js 7...原创 2019-05-31 22:51:02 · 6028 阅读 · 0 评论 -
web自动化之按键操作
前言:在我们浏览器有很多键盘操作。比如 回车啊空格啊,F1 F12啥的。针对键盘操作我们selenium里剔红了Keys方法只需要导入一下就可以了。我们看下Keys的源码,看看它给我们提供了什么from selenium.webdriver.common.keys import Keys一看它给我们提供了这么多键盘事件的方法。那我们怎么用呢?这里我用回车键来示范,后面你们要用到的,自行...原创 2019-06-01 15:10:22 · 889 阅读 · 0 评论 -
web自动化之js日期控件
前言:我们为什么要用到js语言来操控日期控件?因为有些选择日期不支持send_keys()代码里输入,所以我们就用js来操作。注:基本的js语句请自行百度搜索我们打开F12,切换到Console页面,这个页面是用来提供我们写JS语句的,比如我们通过js语句来获取到“出发日期”的属性,我们看到日期里有 readonly 属性。我们消除它,我们就能输入了我们a.readOnly=false...原创 2019-06-01 15:13:28 · 1996 阅读 · 0 评论 -
web自动化之js滚动条
前言:我们为什么要操作滚动条?,因为大部分系统在元素操作是,如果元素不在可见区域。随着操作会自动到可见区域比如我们搜索谷歌。在这页面的元素都是可见的(图1)。但是下面的谷歌_百度百科(图2)我们得下滑到下面才能见到谷歌_百度百科,那我们怎么办?使用driver.execute_script(***).execute_script(***)有4个用法 1.driver.execute_s...原创 2019-06-01 15:16:29 · 1536 阅读 · 0 评论 -
web自动化之上传文件
前言:我们什么时候用到上传文件,上传文件怎么操作?那我们的selenium能不能对上传文件进行操作?解答:1.当我们web自动化需要上传文件来进行自动化的时候,就需要用到2.我们要操作上传文件窗口需要用到pypiwin32模块,这个模块是操控windows弹出框而准备的3.不能,因为上传文件窗口是windows弹出框。我们selenium只是对html页面做操作,不能针对windows端来操...原创 2019-06-01 15:17:13 · 1823 阅读 · 0 评论 -
web自动化之要用到框架导入包总结
1.启动浏览器 需要 from selenium import webdriver 这个必不可少2.三大等待:2.1 强制等待sleep:import time 或者 from time import sleep2.2 隐性等待implicitly_wait(),只需要driver.implicitly_wait()2.3 显性等待WebDriverWait().until()/unt...原创 2019-06-01 15:19:39 · 1050 阅读 · 0 评论 -
PO模式 - common文件路径、存储路径封装(不细说)
首先我们先在Testcfg下创建 online.cfg、online_test.cfg、test.cfgonline.cfg:保存正式环境路径online_test.cfg:用于判断是否是正式/测试环境,True为正式环境,false为测试环境test.cfg:保存测试环境为什么这么做,因为每个公司都会有不同的环境,所以这个切换环境的时候不用去改别的地方,只改这个地方就可以了。我...原创 2019-07-26 15:14:08 · 1319 阅读 · 0 评论 -
PO模式 - common目录下的basepa_element.py
先来看看common有哪些东西basepage_element.py和basepage_elements.py 封装的是关键字驱动,一个是单一的页面元素,一个是多个页面元素的情况下config.py 用来判断环境contants.py 读取目录结构log.py 封装日志文件uploding.py 封装页面文件上传basepage(无关业务):关键字封装。等待、查找元素、点击、输入、...原创 2019-07-26 15:18:20 · 1208 阅读 · 0 评论 -
PO模式环境 - Outputs文件夹和PageLocators
Outputs文件夹下 创建log文件和screenshots文件 log文件用于存放产生的日志文件 screenshots存放元素失败后截图的.jpg图片PageLocators用于封装页面元素以百度为例创建一个baidu_page_locator.py代码如下:from selenium.webdriver.common.by import Byclass BaiduP...原创 2019-07-26 15:20:18 · 638 阅读 · 0 评论 -
PO模式环境 - PageObjects
PageObjects - 用于存放封装页面元素操作创建一个baidu_page.py文件from PO.PageLocators.baidu_page_locator import BaiduPageLocator as locfrom PO.Common.basepage import BasePageclass WebBaidu(BasePage): def baidu_...原创 2019-07-26 15:22:29 · 1013 阅读 · 0 评论 -
PO模式 - TestDatas存放测试数据
创建baidu_datas.py — 存放测试数据代码如下:#baidu - 输入搜索条件。 check - 断言,判断是否搜索成功baidu_data = {"baidu":"腾讯视频","check":"登录"}baidu_2_data = [ {"baidu":"腾讯视频","check":"登录"}, {"baidu":"爱奇艺视频","check":"登录...原创 2019-07-26 15:24:19 · 784 阅读 · 0 评论 -
PO模式 - TestCases测试用例,集成pytest
最后我们要把所有的元素定位、页面操作、测试数据,结合起来。这里我用的pytest单元测试框架,也可以用unittest来进行,但是unittest用来做web单元测试不太好用。首先:我们在TestData创建一个pytest.ini的配置文件(有无可无,看自己需要。),创建一个打标签的元素其次我们在TestCases里创建一个conftest.py的一个文件,用在于编写前置条件和后置条件...原创 2019-07-26 15:25:59 · 3159 阅读 · 2 评论