
Selenium(从入门到框架设计)
文章平均质量分 74
代码丰富,讲解生动
告别长篇大论,直接以代码为依托进行讲解。
从入门到框架设计。
Carl_奕然
全网最逗比的技术博主之一,文章全网阅读量破千万;
荣获优快云、阿里云、51CTO、华为云等多社区专家荣誉,知名企业培训讲师&签约作者;
企业特邀作者和技术测评官,曾获多项国内外主流产品评测奖项;
主张:把博文写成段子,以撩天(妹)方式学习知识;
现就职于世界Top 500知名公司,曾混迹于各大名企;
专注于:AI(机器学习/机器视觉等),大数据,测试开发,性能(传统压测、全链路压测),面试培训及职业规划。
展开
-
博文汇总:Python开发,爬虫,数据分析,自动化测试开发,性能/并发实战,这一篇就足够了。
博文地址汇总1、Python开发系列1.1 Python开发实战1.2 Python数据分析1.3 Python爬虫实战2、测试开发系列2.1 性能实战系列2.2 接口并发系列2.3 自动化测试开发系列2.3.1 自动化框架2.3.2 APP自动化2.3.3 WebUI自动化2.3.4 接口自动化2.4 测试开发理论知识2.5 避坑总结系列3、 数据库系列3.1 MySQL用法及优化4、安全系列5、经典面试系列因为小鱼我一直都比较喜欢定期汇总整理。所以,这次,我也是把这几年,写的博文都汇总了一下,只需原创 2021-07-01 16:28:05 · 1202 阅读 · 0 评论 -
测试开发之:Jenkins持续集成(上),安装与配置
Jenkins持续集成1、什么是持续集成2、持续集成工具3、Jenkins的安装与运行4、Jenkins的配置4.1 系统设置4.2 插件管理5、Jenkins的构建任务5.1新建任务5.2 源码管理5.3 构建触发器5.4 构建环境5.5 设置构建5.6 构建后操作6、运行构建任务1、什么是持续集成定义就是保持不间断的将软件开发中事情集中到一个地方进行管理和处理,包括代码库的维护、测试环境的搭建、测试脚本的运行、测试结果报告的发送等。通过集成工具(例如Jenkins)把这些工具集中到一起按照一定步原创 2021-06-22 18:42:45 · 2770 阅读 · 0 评论 -
Selenium+Python3之:多线程进行跨浏览器测试
python多线程跨浏览器测试1、引言2、跨浏览器操作及定义2.1 啥是跨浏览器测试2.2 为啥要进行跨浏览器测试2.3 跨浏览器测试执行3、代码编写实战1、引言在WebUI自动化方面的博文, 我也是有好一段时间没有更新了, 这昨晚被小屌丝骚扰了…为了答应小屌丝的要求(能得到小姐姐的微信),我昨晚是整理了半宿啊,先还原一下小屌丝诱惑我写博文的对话:小屌丝:小鱼,我用脚指头算了一下,你有半年没更新WebUI相关的博文了,是因为小姐姐吗?小鱼:我擦~~ 你还能说得再直接点吗?小屌丝:6月初,小姐姐原创 2021-06-16 12:41:00 · 1643 阅读 · 7 评论 -
深入浅出聊一聊自动化架构!
浅谈自动化架构 架构是个啥东西架构的设计思想为啥要使用架构类库的设计结构1.Web UI 自动化测试结构2.Appium 自动化测试结构使用架构遇到的坑面试官:小鱼,你来说说自动化测试架构是啥,怎么理解自动化测试架构?小鱼心想:挖草~ ~ 你这个坑,你这一个问题,我都能写一篇文章了。奈何心里这样想的,也不能就这样表达出来,于是乎,小鱼就说:嗯,这问题,我可以从以下几点来慢慢说。架构是个啥东西软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方原创 2020-07-16 11:22:00 · 13252 阅读 · 0 评论 -
selenium3 & python3 常用断言及异常处理(完整篇)
今天我们来聊一聊 异常 和断言!"异常"和"断言"异常常见异常类型异常用法1.try--except--else1.try--except--else2.try--except--finally抛出异常断言断言的三种模式常用的断言方法unittest 常用的断言方法异常常见异常类型序号异常描述1)BaseException所有异常类的基类(python2.5之后)2)Exception所有异常类的基类,继承BaseException3)AssertionE原创 2020-05-28 10:50:28 · 10301 阅读 · 2 评论 -
Selenium成长之路-25 日历控件的处理
今天来分享一下日历控件的处理方式。以下用12306来举例子:使用firbug查看 12306 网站,查看js属性是 readonly = " ",没错,就是这个属性,来控制日历控件,我们就要对它进行一些处理。1.去掉 readonly 属性: ① 直接去掉 readonly 属性; ② 然后直接在 "出发日期"输入框输入信息即可2.使用js去掉readonly属性:①先等位元素;②removeAttribute('readonly')方法删除...原创 2020-05-28 09:15:19 · 5078 阅读 · 0 评论 -
Selenium成长之路-24 frame(iframe)的处理
今天来了解一下 frame的标签。frame标签有三种:frameset、iframe、frame;>>>其中frameset就当做一个普通的标签使用,>>>而frame与iframe就有点特殊了。所以接下来的时间,我们要针对frame和iframe进行详细的操作。Frame与Ifream操作frame 与 iframe的区别如何判断元素是否在iframe上frame 三种方法switch_to.frame()switch_to.default_content(原创 2020-05-27 13:07:01 · 1876 阅读 · 0 评论 -
Selenium成长之路-23cookie的处理
cookie的处理,一部分是运用到爬虫,另一部分是运用到登录的验证码的获取。今天来看看webdriver对 cookie都有哪些神操作。get_cookies() 获取所有cookie信息; get_cookie(name) 返回特定name有cookie信息; add_cookie(cookie_dict) 添加cookie,必须有name和value值; delete_cookie(name) 删除特定部分的cookie信息; delete_all_cookie() 删除所有cookie原创 2020-05-22 09:37:35 · 1487 阅读 · 0 评论 -
Selenium成长之路-22浏览器滚动条处理
在实际项目中,会经常出现元素不在当前屏幕,需要滑动滚动条,才能显示想要的元素。这样,如何通过定位滚动条,来定位到想要的元素呢,webdriver不能直接定位到浏览器滚动条,只能通过execute_script()来执行js脚本,达到滚动条的目的我们今天运用 window.scrollTo()的方法来定位语法:scrollTo(xpos,ypos)>>> xpos :横坐标 ypos:纵坐标直接上代码:# -*- coding: utf-8 -*...原创 2020-05-21 18:01:04 · 1454 阅读 · 0 评论 -
Selenium成长之路-21下载文件
在项目过程中,上传,下载是很常用的功能,为了验证功能好不好用,我们可以通过webdriver。webdriver允许我们设置默认文件下载路径。但是,想要下载,我们需要先了解下载文件的类型,有两种方式,①curl >>curl -I http:/www.baidu.com 可以直接看到 content_type 的类型②requestsimport requestsfile_type = requests.head("http://www.ba...原创 2020-05-21 16:48:45 · 1583 阅读 · 0 评论 -
Selenium成长之路-26分页处理
很长时间没有补充selenium 的脚本了,今天有小朋友问我,如何定位分页。告诉完,索性把代码贴出来。 >>> url,填写自己项目中的url地址即可上代码:# -*- coding: utf-8 -*-"""@ auth : carl_DJ@ time : 2020-5-21"""from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time..原创 2020-05-21 15:47:11 · 2008 阅读 · 0 评论 -
python如何 读取excel数据
简单的 excel 文件数据的读取# -*- coding:utf-8 -*-import xlrdimport osbase_path = os.path.dirname(os.path.abspath('.'))print(base_path)data_path = os.path.join(base_path,'data')print(data_path)class...原创 2019-10-30 15:52:20 · 9006 阅读 · 0 评论 -
selenium python框架之获取email的参数
# -*- coding:utf-8 -*-# @Time : 2019-10-21# @Author : carl-djimport osimport yamlclass GetEmailParameter(object): def __init__(self): cur_path = os.path.dirname(os.path.dirname(o...原创 2019-10-25 09:41:27 · 6444 阅读 · 0 评论 -
selenium python框架之Browser_engine 写法
# -*- coding:utf-8 -*-# @Time : 2019-10-17# @Author : carl_djimport os.pathfrom configparser import ConfigParserfrom selenium import webdriverfrom UISelenium_python_autoFramewrok.utils.log ...原创 2019-10-22 17:42:21 · 5826 阅读 · 0 评论 -
Selenium Python 框架之 BasePage页面封装写法
# -*- coding:utf-8 -*-# @Time : 2019-10-25# @Author : carl_djfrom public.common.log import Loggerfrom config import globalparamfrom selenium.common.exceptions import NoSuchElementExceptionim...原创 2019-10-22 16:47:41 · 6280 阅读 · 0 评论 -
Selenium3+Python3框架之生成测试报告并发送邮件
# -*- coding:utf-8 -*-# @Time : 2019-10-18# @Author : carl_djimport osimport unittestimport timeimport HTMLTestRunnerfrom email.mime.text import MIMETextfrom email.mime.multipart import MI...原创 2019-10-21 15:53:23 · 6640 阅读 · 0 评论 -
Selenium Python 框架之日志(Log)的写法及调用
1.log类的写法:import loggingimport os.pathimport timeclass Logger(object): def __init__(self, logger): """ 指定保存日志的文件路径,日志级别,以及调用文件 将日志存入到指定的文件中 :param logg...原创 2019-10-17 16:26:53 · 4491 阅读 · 0 评论 -
Selenium成长之路-03使用IDLE编写第一个自动化脚本
windows用户,在电脑的开始菜单搜索IDLE,并启动ILDE(python GUI)编译器。接下来我们就进入编译的环节了1.导入webdriver包:from selenium import webdriver2.初始化一个火狐浏览器:driver = webdriver.Firefox() 也可以调用chrome浏览器:driver = webdriver.Chrome(...原创 2018-05-31 12:27:10 · 1926 阅读 · 0 评论 -
Selenium成长之路-04浏览器以及驱动的安装
Webdriver经历了这么多年的发展,也逐渐支持多个浏览器:如:Firefox (FirefoxDriver)、IE (InternetExplorerDriver)、Opera (OperaDriver) 、 Chrome (ChromeDriver) 和PhantomJS(Phantomjsdriver)当然,一般的公司在使用浏览器,无非是Firefox、Chrome以及...原创 2018-05-31 13:01:17 · 5288 阅读 · 0 评论 -
Selenium成长之路-20文件上传
文件上传,也是一个比较很常见的功能之一,这也是在实际测试过程中,很麻烦的一件事情。前几天看过一个大神的博客,非常详细的介绍了各个文件上传的方法,本来想自己总结一下,在写出来,但是由于时间的原因,这里就先介绍:input类型文件上传上传按钮类型大体上可以分为两种,一种是input框,另外一种就比较复杂,通过js、flash等实现,标签非inputInput类标签:# codi...原创 2018-06-14 12:22:24 · 3950 阅读 · 0 评论 -
Selenium成长之路-13鼠标事件
日常生活中,鼠标是我们每天工作必不可少的一个设备,那么在自动化测试中,模仿鼠标操作,也是必不可少的一个功能。那么在测试工作中,鼠标都有哪些操作呢?单机,右击,双击,拖动等,对的,平时这些操作,在自动化测试中,也是必须要用到的。那么我们就来看看在这篇文章中,都有哪些ActionChains类: .click() 单机 .context_click() 右击 .double_click() ...原创 2018-06-07 17:52:29 · 1914 阅读 · 0 评论 -
Selenium成长之路-05简单对象定位之id方法
在学习自动化之前,我们需要先了解,什么是元素,什么是元素定位,元素:在这系列selenium自动化学习中,我们说说的元素,就是指网页元素。在网页上面的文本输入框,按钮,多选,单选,标签,和文字都叫元素。元素定位:一个HTML页面元素,可以用很多方法去描述这个元素的位置。例如通过一些手段或者表达式去描述这个元素在页面对应的位置。Id定位:id定位是平时我们最常用的一种定位方式,可以很简单...原创 2018-06-01 13:15:27 · 3809 阅读 · 0 评论 -
Selenium成长之路-14键盘事件
键盘也是我们日常办公必不可少的一个设备,没有了键盘,我们很难进行操作电脑,那么对自动化测试也是一样的,使用键盘来模拟人工进行操作,是非常有必要的事情。那么我们就来看看,都有哪些常用的键盘操作: .send_keys(Keys.BACK_SPACE) 删除键(Backspace) .send_keys(Keys.CONTRAL,'c') 复制(ctrl + 'C') ...原创 2018-06-08 15:53:23 · 2763 阅读 · 0 评论 -
Selenium+python之不打开浏览器,来运行测试用例
调用浏览器,来进行自动化测试,是一个常规操作,或者说针对少量测试用例,可以打开浏览器运行但是针对大量运行测试用例来说,如果每个测试用例都需要调用一次 浏览器,那么无疑对服务器增加了巨大的压力那么有没有一个办法,不调用浏览器,让浏览器在后台偷偷工作呢?这个可以有: 用chrome-headless Chrome-headless 模式, Google 针对 Chrome 浏览器...原创 2019-07-01 15:40:22 · 13310 阅读 · 0 评论 -
Selenium+python之隐藏浏览器的“Chrome正在受到自动软件的控制“提示语
在执行测试用例,细心的人都会发现, 浏览器的title部分,有一句提示语:Chrome正在受到自动软件的控制那么,能不能去掉这句提示语呢,也是没问题的同样的,使用"headless",在浏览器中加入:disable-infobars 这个参数,如下:option = webdriver.ChromeOptions()option.add_argument('disa...原创 2019-07-01 16:04:26 · 10642 阅读 · 7 评论 -
Selenium成长之路-01如何开始学习
因为我一直都有做笔记的习惯,只是手写的,最近突然把目标放到了博客上,是因为最近看到我邻座同事在写博客,我也就告别笔记本,把笔记存放到csdn上为什么最近要写selenium,是因为在搞了一段时间的selenium之后,觉得有必要把我的成长之路跟大家分享一下,可能有不足,也希望多多提出意见以及建议,当然,也希望更多的小伙伴参与到讨论中学习selenium之前,需要了解的:1.什么项目适合做自动化 具...原创 2018-05-30 15:56:00 · 2513 阅读 · 0 评论 -
Selenium成长之路-02环境搭建
本篇主要介绍 Windows环境下的环境搭建,如果需要linux搭建方法,可以私信 ~准备工具如下:------------------------------------------------------------下载 python【python 开发环境】http://python.org/getit/下载 setuptools 【python 的基础包工具】http:/...原创 2018-05-30 17:59:23 · 2422 阅读 · 0 评论 -
Selenium成长之路-07简单对象定位之tag name方法
继续学习元素定位:tag name每个前端开发人员,都有自己的习惯,所以,不一定每一个开发人员都喜欢用id、name来做标签,所以我们就需要掌握其他的定位方法,例如tag name下面我们继续来进行百度首页的定位,可以看到首页下图中红框的都是tag name是不是觉得tag name 标签太多,感觉看起来不靠谱呢 ~ ~!下面就使用tag name来进行form元素...原创 2018-06-04 12:34:52 · 2773 阅读 · 0 评论 -
Selenium成长之路-15设置等待时间
为了保证运行的脚本正常加载,我们需要的是设置等待时间,具体有以下几种:sleep():设置固定等待时间,主要由time包提供,也可叫强制等待,也就是说不管页面是否加载完成,都会等待这些时间。代码如下:# coding = utf-8from selenium import webdriverimport timefrom selenium.webdriver.com...原创 2018-06-11 14:58:06 · 2657 阅读 · 0 评论 -
Selenium成长之路-08简单对象定位之class name方法
class name 的定位方法与tag name 是差不多的我们直接上代码,还是以百度首页输入框为例来进行演示:从截图中可以看出来,class name 就是 's_ipt'下面我们就通过class name元素来进行定位# coding = utf-8from selenium import webdriverimport timefrom seleniu...原创 2018-06-05 12:21:44 · 4662 阅读 · 0 评论 -
Selenium成长之路-16获取当前页面的title、url及浏览器version等
在实际项目中,我们需要一些标识进行判断,例如进入当前页面的title是否是预期的,当前url地址是否正确、以及浏览器信息(浏览器版本,浏览器驱动版本等)。打印当前页面title信息代码如下:# coding = utf-8from selenium import webdriverfrom selenium.webdriver.common.by import Byim...原创 2018-06-12 12:07:56 · 14253 阅读 · 1 评论 -
Selenium成长之路-17刷新页面
刷新是一个很常用的功能,我们来看看怎么使用刷新这个功能。代码如下:# coding = utf-8from selenium import webdriverfrom selenium.webdriver.common.by import Byimport timedriver = webdriver.Chrome()url = 'http://www.baidu.co...原创 2018-06-12 12:20:49 · 6221 阅读 · 0 评论 -
Selenium成长之路-09简单对象定位之link text方法
有的时候,我们需要操作的元素是一个文字链接,那么我们可以通过 linktext 或 partiallinktext 进行元素 定位今天我们先来介绍link text元素定位百度首页上面的"新闻",'hao123','地图'等就可以使用link text元素来进行定位我们来定位百度首页的'地图',代码如下:# coding = utf-8from selenium import webdrive...原创 2018-06-05 12:32:52 · 5102 阅读 · 0 评论 -
Selenium成长之路-10简单对象定位之partial link text方法
回想上篇的问题,如果文字链接很长的时候,我们是否还有必要继续使用link text来进行元素定位呢?这就是我们这篇要学习的,partial link text 元素,和link text是一样的用法,不同点就是,partial link 只截取部分文字即可我们来定位 百度首页的 "更多产品"这个文字链接,但是我们在partial link text 只截取前两个字,代码如下:...原创 2018-06-05 12:43:41 · 6507 阅读 · 0 评论 -
Selenium成长之路-11简单对象定位之XPATH方法
XPath是一种在HTML文档中定位元素的语言。因为 HTML 可以看做 XML 的一种实现,所以 selenium 用 户可是使用这种强大语言在 web 应用中定位元素。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力,XPath 很快的被开发者采用来当作小型查询语言。XPath的使用,需要在Firefox浏览器先安装FireBug插件,建议使用Firefox浏览器(建议...原创 2018-06-06 12:51:08 · 3998 阅读 · 0 评论 -
Selenium成长之路-18多窗口切换
在实际测试过程中,打开多窗口是进行测试是很正常的事情,那么在自动化测试中,也需要开启多窗口来进行测试。我们来分析一下,打开多窗口测试的思路:1.打开一个目标网页2.再次打开新的网页3.获得所有窗口的4.循环判断窗口是否为当前窗口5.回到原先窗口6.关闭并退出浏览器代码如下:# coding = utf-8from selenium import w...原创 2018-06-13 13:13:21 · 4679 阅读 · 0 评论 -
Selenium成长之路-12简单对象定位之CSS方法
CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML和XML文档的表现。CSS 使用选 择器来为页面元素绑定属性。这些选择器可以被 selenium 用作另外的定位策略。CSS的定位速度比XPATH要快,当然,语法的话,也是比XPATH复杂一点,其实CSS和XPATH只要精通一个,就可以了。当然,如果两个方法都掌握,那也是很美丽的事情CSS的详细介绍,可以...原创 2018-06-06 17:32:57 · 5312 阅读 · 0 评论 -
Selenium成长之路-19alert/prompt/confirm弹框处理
webdriver 中处理 JavaScript 所生成的 alert、confirm 以及 prompt 是很简单的。具体思路是使用 switch_to.alert()方法定位到 alert/confirm/prompt。然后使用 text/accept/dismiss/send_keys 按需进行操做。先来看看各个弹窗的样式:alert弹窗:confirm弹窗prom...原创 2018-06-13 17:19:27 · 7442 阅读 · 0 评论 -
Selenium成长之路-06简单对象定位之name方法
我们今天通过name元素来定位百度首页输入框。首先我们通过Firefox打开百度首页,通过firebug定位百度输入框(如下图),可以看到name标签为'wd'下面我们通过定位name元素的方法来展示一下代码:# coding = utf-8from selenium import webdriverimport timefrom selenium.we...原创 2018-06-04 12:15:13 · 9958 阅读 · 0 评论