Selenium+Docker自动化实践
文章平均质量分 75
1.基于java的Selenium Web自动化测试框架;
2.讲解了基础知识Java、Html、Css等入门知识;
3.详细介绍Selenium的历史、原理、使用;
4.整合日志、数据驱动、Selenium Grid分布执行、TestNg、Jenkins、Docker框架
雨墨轩痕
软件测试
展开
-
Selenium之cannot find Chrome binary错误
一、浏览器安装默认路径Selenium环境搭建的问题引起最多的是No browser is open,这种报错导致浏览器无法打开;问题的原因主要是2点1.浏览器安装默认路径2.浏览器匹配的驱动没有放在正确的环境变量目录位置(可以代码指定驱动路径)3.浏览器版本与对应的驱动版本匹配只要确认这2个问题,基本上可以解决No browser is open的问题;但是注意是基本上,曾几...原创 2019-05-23 17:59:35 · 56345 阅读 · 4 评论 -
Selenium偶遇反爬虫
开发在爬虫获取数据使用Selenium访问网站的时候遇到如下问题:使用get方法打开第一个url,请求可以正常发送并得到正确的响应内容;然后再通过点击操作页面上的a标签跳转url,或者再次使用get方法打开url,会得到无权限访问的403响应,就是标题中的“Access Denied You don't have permission to access “url” Reference .....原创 2019-04-26 18:30:24 · 5996 阅读 · 0 评论 -
Selenium之EventFiringWebDriver事件监听
做UI层自动化比较棘手的问题就是稳定性,强壮性不足的代码运行起来会抛出各种异常让人无奈,在排查问题过程中debug模式的调试加日志信息是可以快速命中报错点的有效方式之一。初学者学习Selenium开始都是为了熟悉Selenium的方法使用,从实例化WebDriver、get方法打开浏览器输入url、findElement方法查找元素、click或sendKeys等方法的操作、最后quit方法关闭浏...原创 2019-04-03 18:50:27 · 7024 阅读 · 0 评论 -
Selenium之POM模式:自定义 VS PageFactory
什么是POM(page object model)?从英文解释为页面对象模式,说的很清楚,玩过QTP的朋友就有点懵懂了;不错,就是有点对象库的意思。还记得前面说的QTP故事的时候说到对象库编程与描述性编程吗?可以回去看看。对象库就更好理解了,就是管理对象的一个仓库,而从selenium的POM模式来说,是每个页面的对象分为一个对象库;再说明白点就是每个页面的对象定位管理起来。一、自定义...原创 2018-12-13 14:56:09 · 905 阅读 · 0 评论 -
探索Selenium打开浏览器加载慢的原因
在自动化元素定位操作中经常使用智能等待来加强定位的强壮性,主要就是因为WebDriver没有提供页面加载场景的方法;在使用JavaScript知识的突然心生灵感,可以使用JavaScript来配合验证页面加载,结果发现我真是井底之蛙。一、domcument.readyState 首先定位从Document对象出发,而Document对象是在html文档加载完成便可操作使用,所以判断文...原创 2018-10-13 11:12:00 · 25595 阅读 · 0 评论 -
Selenium firefox浏览器修改为标签页打开方式的各种坑
需求: 今天有位朋友遇到一个梗,selenium使用firefox打开多个网页时,firefox总是以新窗口的方式打开;而这位朋友的需求是以标签页的方式打开新页面。1.新窗口方式:2.新标签页方式(在IE称为新选项卡): 当然从selenium观点来出发,无论浏览器以新窗口或者新标签,都不影响WebDriver操作元素,只需要做好句柄的切换即可。而现在的需求就是...原创 2018-09-28 16:59:35 · 5480 阅读 · 0 评论 -
UI自动化的最终,非最终--Docker
许久没有更新文章,UI自动化的进程还在继续,最近一直在规划自动平台化,参考其他公司的测试平台更多的是把UI自动化做成关键字驱动,但效果似乎不明显,虽然使用成本会大大降低,不用太多精力去开培训就可以让整个测试团队使用;但缺点也很明显,庞大的关键字用例独立化,数据驱动的管理问题,以及逻辑处理的劣势。很简单的举例就是RobotFramework,如此强大的关键字框架也没能解决复杂逻辑带来的问题。...原创 2018-08-10 16:11:09 · 784 阅读 · 0 评论 -
SeleniumGrid+TestNg并发执行自动化测试
TestNg的并发有Method、Class、Method级别提供测试时使用,而并发最终在Selenium中目的肯定不是为了性能测试(千万不要乱使用工具去发挥它的弱点),是为了解决执行庞大测试用例时的执行效率,TestNg是如此、Selenium Grid也是如此。那TestNg与Selenium Grid结合能干什么呢?来看下面对话:TestNg:我的并发能力很强大,可以同时启动多线...原创 2018-04-13 23:11:25 · 3852 阅读 · 6 评论 -
Selenium Grid的原理、配置与使用
6.Selenium GridSelenium Grid在前面介绍Selenium的时候说过它有三大组件,Selenium Grid就是其中之一而作用就是分布式执行测试。讲分布式之前还是要说说UI自动化的优势来突出Selenium Grid,最简单的两点解决重复执行测试、解决多浏览器兼容这是UI自动化的价值;那分布式是什么概念?简单的说就是老大收到任务,分发给手下去干;通过Selenium G...原创 2018-04-13 23:00:01 · 37820 阅读 · 6 评论 -
webdriver原理之driver与浏览器交互
使用selenium与webdriver打交道,大家都知道,是启动webdriver去调用浏览器,来完成操作。今天就主要介绍的详细点,driver与浏览器的亲密交互,主要使用chrome与chromedriver来操作。1.首先下载chromedriver与selenium-server-standalone.jar下载地址:(1)chromedriver各版本下载地址:http...原创 2017-09-19 11:35:22 · 14644 阅读 · 0 评论 -
webdriver之Can not connect to the Service chromedriver
停留了几天,重新打开robot,写好了脚本,跑了一遍,结果发现浏览器打不开了;于是郁闷了一会,根本就没动过这套环境,突然就不行了,浏览器没有更新版本,webdriver也没动过;通过查看日志,报的是Can not connect to the Service chromedriver,这个错误之前从来没遇到过,通过查询后得知答案,是因为这几天在学习java动了hosts文件,异常连不上chrome...原创 2017-09-18 17:26:27 · 8158 阅读 · 4 评论 -
RobotFramework之For循环
RobotFramework只支持FOR循环,但是也足够用了,如果有其他要求,可以自定义写。一、示例1.FOR......IN......IN后面可以跟无数的值,然后一个一个读取到循环里执行,如下图打印结果:把IN后面的值打印出来啦2.FOR......IN RANGE......IN RANGE后面跟的是值的范围,比如填写10,则为0-9,原创 2017-08-22 15:49:52 · 6278 阅读 · 0 评论 -
RobotFramework中None与null的使用
最近看到很多人问在RobotFramework中怎么比较None与null?或者问能不能用run keyword if比较变量与null、None啊?答案是肯定可以的,但是很多人忽略了空字符串。下面一一述来。一、概念1.空字符串:空字符串是指在内存中分配了存储空间,只是值的长度是0,在RobotFramework中表示方法:'';2.None与null:None与null是指没原创 2017-08-22 10:37:55 · 17362 阅读 · 3 评论 -
robotframework+jenkins运行报Build step 'Execute Windows batch command' marked build as failure解决方法
1.在配置jenkins的job时,添加构建步骤Execute Windows batch command,输入执行robotframework测试用例命令2.然后jenkins安装robotframework插件,添加构建后操作,Publish Robot Framework test results,这个步骤的作用(1)根据robot output文件统计出测试用例原创 2017-08-17 18:14:47 · 20980 阅读 · 1 评论 -
selenium入门学习理论必知
一、什么是框架?在学习这条不归路中,遇到很多想往自动化方向学习的同学,很多人第一句现在自动化使用什么框架最好or最多or最容易啊。然后我反问一句,什么是框架理解吗?我一句嘴贱然后就要解释大半天。是的,我开始见到框架这个词的时候,也一脸懵逼,似懂非懂的,都是正常的,但是一直也没人跟我解释一下,去问人吧,也不是一句两句能说清楚,重要的是理解嘛。1.在学习selenium(其他工具也是一样)的时候,大家...原创 2017-08-16 16:08:29 · 694 阅读 · 0 评论 -
浏览器检查selenium的xpath、css定位,助你轻松搞定元素定位
学习selenium,定位是第一入门课,在学习xpath、css定位时,经常会出现写错或者定位不到等问题,直接在浏览器复制吧,定位的locator太长又不友好,怎么解决呢?其实浏览器就可以帮我们解决,打开浏览器F12模式,选择Console页签。支持浏览器:chrome、firefox、360极速版等一、xpath在Console中输入$x(),括号里面填写xpath的locator...原创 2017-08-15 18:03:36 · 6198 阅读 · 0 评论 -
selenium之CSS定位
功能自动化学习selenium必经之路就是定位,在大部分入门定位中都会涉及id、name、classname定位,这是最简单的定位,但是由于前端代码没有一个规范说一定要使用id、name、classname,在很多前端开发中,使用id、classname大部分都是为了调样式或者js、jQuery触发事件,在不使用这些控件触发事件的前提或者样式的情况下,大部分是不会有id、classna...原创 2017-08-15 17:06:03 · 9387 阅读 · 2 评论 -
selenium之HTML元素无法定位
本文主要是记录一些在做自动化过程中,无法定位的一些元素,因为对HTML理解不深,所以遇到的坑需要一一化解,后续遇到的会陆续记录。一、a标签的href属性值等于javascript:void(0)1.首先解释下javascript:void(0),javascript是网页的脚本语言之一,而void是javascript的操作符,意思就是只执行表达式,但是没有返回值(在C、java等语...原创 2017-05-26 16:08:11 · 3484 阅读 · 1 评论