摘要:
前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了。 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。 这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。 滚动条是无法直接用定位工具来定位的。s 阅读全文
posted @ 2017-09-27 13:57
年华如梦似流水
阅读(128)
评论(0)
推荐(0)
摘要:
前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert。先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决。 alert\confirm\prompt弹出框操作主要方法有: text:获取文本值 accept() :点击"确认" dismiss() 阅读全文
posted @ 2017-09-27 13:46
年华如梦似流水
阅读(230)
评论(0)
推荐(0)
摘要:
前言 有很多小伙伴在拿163作为登录案例的时候,发现不管怎么定位都无法定位到,到底是什么鬼呢,本篇详细介绍iframe相关的切换 以http://mail.163.com/登录页面10为案例,详细介绍switch_to_frame使用方法. 一、frame和iframe区别 Frame与Iframe 阅读全文
posted @ 2017-09-27 13:45
年华如梦似流水
阅读(137)
评论(0)
推荐(0)
摘要:
前言最近由于工作原因,更新慢了一点,今天终于抽出一点时间给大家继续更新selenium系列,学习的脚本不能停止,希望小伙伴能多多支持。 本篇以百度设置下拉选项框为案例,详细介绍select下拉框相关的操作方法。一、认识select 1.打开百度-设置-搜索设置界面,如下图所示 2.箭头所指位置,就是 阅读全文
posted @ 2017-09-27 13:45
年华如梦似流水
阅读(196)
评论(0)
推荐(0)
摘要:
前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。 一、认识多窗口 1.打开赶集网:http://bj.ganji.com/,点击招聘求职按钮会发现右边多了一个窗口 阅读全文
posted @ 2017-09-27 13:44
年华如梦似流水
阅读(214)
评论(0)
推荐(0)
摘要:
前言 前面的几篇都是讲如何定位一个元素,有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象。 webdriver 提供了定位一组元素的方法,跟前面八种定位方式其实一样,只是前面是单数,这里是复数形式:find_elements 本篇拿百度搜索作为案例,从搜索 阅读全文
posted @ 2017-09-27 13:43
年华如梦似流水
阅读(143)
评论(0)
推荐(0)
摘要:
前言 一、简单操作 1.点击(鼠标左键)页面按钮:click() 2.请空输入框:clear() 3.输入字符串:send_keys() 4.打开测试部落论坛后,点击放大镜搜索图标,一般为了保证输入的正确性,可以先清空下输入框,然后输入搜索关键字 二、submit提交表单 1.在前面百度搜索案例中, 阅读全文
posted @ 2017-09-27 13:43
年华如梦似流水
阅读(162)
评论(0)
推荐(0)
摘要:
前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求。css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁。这一篇css的定位方法,主要是对比上一篇的xpath来的,基本上xpath能完成的,css也可以做到。两篇对比学 阅读全文
posted @ 2017-09-27 13:42
年华如梦似流水
阅读(110)
评论(0)
推荐(0)
摘要:
前言 前面几篇都是讲一些基础的定位方法,没具体的案例,小伙伴看起来比较枯燥,有不少小伙伴给小编提建议以后多出一些具体的案例。本篇就是拿部落论坛作为测试项目,写一个简单的登录测试脚本。 在写登录脚本的时候呢,先要保证流程能跑起来,然后才是去想办法优化代码,让自己的脚本看起来更舒服,具有良好的可读性。 阅读全文
posted @ 2017-09-27 13:42
年华如梦似流水
阅读(141)
评论(0)
推荐(0)
摘要:
前言 福利来了,对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛? 上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆盖到)一、安装Selenium Builder在火狐浏览器的附加组件中搜索添加Selenium Bu 阅读全文
posted @ 2017-09-27 13:40
年华如梦似流水
阅读(110)
评论(0)
推荐(0)
摘要:
前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到。这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法。 什么是xpath呢? 官方介绍:XPath即为XML路径语言,它是一种用来确定XML1(标准通用标记 阅读全文
posted @ 2017-09-27 13:39
年华如梦似流水
阅读(111)
评论(0)
推荐(0)
摘要:
前言 自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告。本篇主要讲如何用firefox辅助工具进行元素定位。元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%;操作元素10%,获取返回结果10%;断言10%。 阅读全文
posted @ 2017-09-27 13:38
年华如梦似流水
阅读(119)
评论(0)
推荐(0)
摘要:
前言前面已经把环境搭建好了,这从这篇开始,正式学习selenium的webdriver框架。我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是webdriver框架的API。本篇主要讲如何用Python调用webdriver框架的API,对浏览 阅读全文
posted @ 2017-09-27 13:36
年华如梦似流水
阅读(98)
评论(0)
推荐(0)
摘要:
前言 在写脚本之前,先要找个顺手的写脚本工具。python是一门解释性编程语言,所以一般把写python的工具叫解释器。写python脚本的工具很多,小编这里就不一一列举的,只要自己用着顺手就可以的,如果你还没有选好解释器,小编这里推荐pycharm。 在安装pycharm后,有一些小伙伴不会破解, 阅读全文
posted @ 2017-09-27 13:36
年华如梦似流水
阅读(131)
评论(0)
推荐(0)
摘要:
一、pip出现异常 有一小部分童鞋在打开cmd输入pip后出现下面情况:Did not provide a commandDid not provide a command?这是什么鬼?正常情况应该是酱紫 二、解决办法:1.pip是一个.exe的可执行文件,在cmd输入pip.exe就可以解决了2. 阅读全文
posted @ 2017-09-27 13:34
年华如梦似流水
阅读(99)
评论(0)
推荐(0)
摘要:
selenium版本安装后启动Firefox出现异常:'geckodriver' executable needs to be in PATH selenium默默的升级到了3.0,然而网上的教程都是基于selenium2的,最近有不少小伙伴踩坑了,决定有必要出这一篇,帮助刚入门的小伙伴们解决好环境 阅读全文
posted @ 2017-09-27 13:30
年华如梦似流水
阅读(134)
评论(0)
推荐(0)
摘要:
前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要。本系列依然以selenium2为基础,目前selenium3坑比较多,暂时没精力去研究,后续会出相关教程。 一、selenium简介 Selenium 是用于测试 Web 阅读全文
posted @ 2017-09-27 13:29
年华如梦似流水
阅读(134)
评论(0)
推荐(0)
摘要:
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素Mac版的appium1.6的版本在UI上有了很大的改变,本篇详细解决如何使用appium1.6定位iOS的app页面元素。 一、S 阅读全文
posted @ 2017-09-27 13:19
年华如梦似流水
阅读(207)
评论(0)
推荐(0)
摘要:
前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itools安装。对于没有iPhone真机的小伙伴,想在iOS模拟器上安装app测试可不是那么容易的事情。 阅读全文
posted @ 2017-09-27 13:18
年华如梦似流水
阅读(160)
评论(0)
推荐(0)
摘要:
前言 本篇安装brew、carthage,解决启动appium时的报错问题,另外安装appium-doctor检查appium的环境 1.brew 2.carthage 3.appium-doctor 一、brew安装 1.brew是一个软件包管理工具,类似于centos下的yum或者ubuntu下 阅读全文
posted @ 2017-09-27 13:18
年华如梦似流水
阅读(143)
评论(0)
推荐(0)
摘要:
前言 上一篇已经可以启动iOS模拟器上的safari浏览器了,启动app比启动浏览器要复杂一点,本篇以github上的源码为案例详细介绍如何启动iOS模拟器的app 一、clone源码 1.github上Appium的案例源码地址:https://github.com/appium/sample-c 阅读全文
posted @ 2017-09-27 13:17
年华如梦似流水
阅读(131)
评论(0)
推荐(0)
摘要:
前言 mac上搭建appium+python的环境还是有点复杂的,需要准备的软件 1.nodejs 2.npm 3.cnpm 4.appium 5.pip 6.Appium-Python-Client 一、nodejs安装 1.nodejs下载地址:https://nodejs.org/ 2.下载完 阅读全文
posted @ 2017-09-27 13:16
年华如梦似流水
阅读(204)
评论(0)
推荐(0)
摘要:
前言 在mac上搭建appium踩了不少坑,先是版本低了,启动后无限重启模拟器。后来全部升级最新版本,就稳稳的了。 环境准备: 1.OS版本号10.12 2.xcode版本号8.3.2 3.appium版本号1.6.4(appium-desktop1.1.0) 4.ios模拟器版本号10.3 一、O 阅读全文
posted @ 2017-09-27 13:16
年华如梦似流水
阅读(127)
评论(0)
推荐(0)
摘要:
前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的。 一、环境准备 1.手机上装一个chrome浏览器 2.电脑上装chrome浏览器 3.手机连电脑 二、启动adb服 阅读全文
posted @ 2017-09-27 13:15
年华如梦似流水
阅读(247)
评论(0)
推荐(0)
摘要:
前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一、id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性 2.如上图的定位,就可以通过id来定位 格式:driver.find_element_by_id(" 阅读全文
posted @ 2017-09-27 13:14
年华如梦似流水
阅读(149)
评论(1)
推荐(0)
摘要:
前言 现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了。 一、识别webview 1.用定位工具查看页面,发现页面上有些区域无法定位到,如下图左边红色区域,只能定位到这个大框框,红 阅读全文
posted @ 2017-09-27 13:14
年华如梦似流水
阅读(2289)
评论(0)
推荐(0)
摘要:
前言 学android测试,adb是必学的,有几个常用的指令需要熟练掌握 一、检查设备 1.如何检查手机(或模拟器)是连上电脑的,在cmd输入: >adb devices 2.一定要看到上图红色区域的,设备名称,然后接着是device(如果看到这里是offline,那就是adb端口被占了) 二、安装 阅读全文
posted @ 2017-09-27 13:12
年华如梦似流水
阅读(151)
评论(0)
推荐(0)
摘要:
前言 有些小伙伴没android手机,这时候可以在电脑上开个模拟器玩玩 一、模拟器配置 1.双击启动AVD Manager,进入配置界面 2.点Create按钮创建 3.配置模拟器基本信息 --AVD Name:设备名称,自己定义一个,用英文(不要用中文) --Device:设备型号,如下图选项意思 阅读全文
posted @ 2017-09-27 11:01
年华如梦似流水
阅读(166)
评论(0)
推荐(0)
摘要:
前言 SDK Manager到有哪些东西是必须安装的呢? 一、SDK Manager 1.双击打开SDK Manager界面 2.Tools里面前三个是必须下载的 --Android SDK Tools里面有各种实用工具,如:uiautomatorviewer,uiautomatorviewer,u 阅读全文
posted @ 2017-09-27 11:00
年华如梦似流水
阅读(95)
评论(0)
推荐(0)
摘要:
前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家。 1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控件 阅读全文
posted @ 2017-09-27 10:59
年华如梦似流水
阅读(137)
评论(0)
推荐(0)
摘要:
前言 在做app自动化过程中会踩很多坑,咱们都是用的中文的app,所以首先要解决中文输入的问题! 本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题。 一、定位搜索 1.打开淘宝点搜索按钮,进入到搜索页面 2.然后定位到搜索框后用sendkeys方法输入“hao”,这里定位元素用第四篇讲的u 阅读全文
posted @ 2017-09-27 10:58
年华如梦似流水
阅读(286)
评论(0)
推荐(0)
摘要:
前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙伴不知道这个ip和端口哪里来的,于是小编决定写一篇关于这个appium的服务器ip文章! 一般来说a 阅读全文
posted @ 2017-09-27 10:57
年华如梦似流水
阅读(204)
评论(0)
推荐(0)
摘要:
前言 appium Inspector从入门到放弃!反正你都打开了,那就看下为什么要放弃吧! Appium Inspector是appium自带的一个元素定位工具,上一篇介绍了如何使用uiautomatorviewer进行元素定位。本篇学习Appium Inspector是如何定位的。 一、设置ap 阅读全文
posted @ 2017-09-27 10:56
年华如梦似流水
阅读(255)
评论(0)
推荐(0)
摘要:
前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一 阅读全文
posted @ 2017-09-27 10:55
年华如梦似流水
阅读(249)
评论(0)
推荐(0)
摘要:
前言 前面两篇环境已经搭建好了,接下来就是需要启动APP,如何启动app呢?首先要获取包名,然后获取launcherActivity。获取这两个关键东西的方法很多,这里就不一一多说,小伙伴们可以各显神通。小编这里主要给大家推荐一个sdk自带的实用工具aapt. aapt即Android Asset 阅读全文
posted @ 2017-09-27 10:52
年华如梦似流水
阅读(487)
评论(0)
推荐(0)
摘要:
前言 上一篇android测试开发环境已经准备好, 接下来就是appium的环境安装了。环境安装过程中切勿浮躁,按照步骤一个个来。 环境装好后,可以用真机连电脑,也可以用android-sdk里面的模拟器(当然这个模拟器不是很好用),我一般喜欢真机,真机比较快。 一、必备软件安装 小编的环境是Win 阅读全文
posted @ 2017-09-27 10:49
年华如梦似流水
阅读(105)
评论(0)
推荐(0)
摘要:
前言 appium可以说是做app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本语言也是支持java和Python。小编擅长Python,所以接下来的教程是appium+python的实例。 学习appium最大的难处在于环境的安装,80%的人死于环境安装,然后就没然后了, 阅读全文
posted @ 2017-09-27 10:48
年华如梦似流水
阅读(127)
评论(0)
推荐(0)
摘要:
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版 阅读全文
posted @ 2017-09-27 10:47
年华如梦似流水
阅读(110)
评论(0)
推荐(0)
摘要:
前言 前面一篇已经实现首次上传代码到github了,迈出了装逼第一步,本篇继续讲如何把本地更新的代码同步更新到github上 一、clone代码 1.把大神的代码clone到本地,或者clone自己github上的代码,使用指令: >git clone https://github.com/yoyo 阅读全文
posted @ 2017-09-27 10:43
年华如梦似流水
阅读(138)
评论(0)
推荐(0)
摘要:
前言 不会使用github都不好意思说自己是码农,github作为一个开源的代码仓库管理平台,我们可以把自己的代码放到github上,分享给小伙伴,自己也能随时随地同步更新代码。 问题来了:为什么越来越多的小伙伴喜欢开源?答:因为我们可以免费下载到大神的源码啊! 一,注册Github账号 1.先注册 阅读全文
posted @ 2017-09-27 10:42
年华如梦似流水
阅读(155)
评论(0)
推荐(0)
摘要:
前言 有很多小伙伴吵着要完整的项目源码,完整的项目属于公司内部的代码,这个是没法分享的,违法职业道德了,就算别人分享了,也只适用于本公司内部的业务。 所以用例的代码还是得自己去一个个写,我只能分享项目框架,只能帮你们到这了。 一、项目结构 1.新建一个工程(一定要创建工程),工程名称自己定义,如:y 阅读全文
posted @ 2017-09-27 10:38
年华如梦似流水
阅读(351)
评论(0)
推荐(0)
摘要:
前言 有些登录不是用cookie来验证的,是用token参数来判断是否登录。 token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已;另外一种是在url请求参数里,这种更直观。 一、登录返回token 1.如下图的这个登录,无cookies 2.但是登录成功后有返回 阅读全文
posted @ 2017-09-27 10:35
年华如梦似流水
阅读(519)
评论(0)
推荐(0)
摘要:
前言 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会报:requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify 阅读全文
posted @ 2017-09-27 10:34
年华如梦似流水
阅读(382)
评论(0)
推荐(0)
摘要:
前言 前面一篇实现了参数的关联,那种只是记流水账的完成功能,不便于维护,也没什么可读性,接下来这篇可以把每一个动作写成一个函数,这样更方便了。 参数化的思维只需记住一点:不要写死 一、登录函数 1.s参数是session的一个实例类,先放这里,方便写后面代码 2.登录函数传三个参数,s是需要调用前面 阅读全文
posted @ 2017-09-27 10:33
年华如梦似流水
阅读(2398)
评论(0)
推荐(0)
摘要:
前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了。 一、重定向 1. (Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置,从地址A跳转到地址B了 阅读全文
posted @ 2017-09-27 10:32
年华如梦似流水
阅读(490)
评论(0)
推荐(0)
摘要:
前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 一、删除草稿箱 1.我们前面讲过登录后保存草稿箱,那可以继续接着操作:删除刚才保存的草稿 2.用fiddler抓包,抓到删除帖子的请求,从抓包结果可以 阅读全文
posted @ 2017-09-27 10:32
年华如梦似流水
阅读(412)
评论(0)
推荐(0)
摘要:
前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理。 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的参数就行,这时候就需要json来解析返回的数据了。 一、json模块简介 1.Json简介:Json 阅读全文
posted @ 2017-09-27 10:30
年华如梦似流水
阅读(431)
评论(0)
推荐(0)
摘要:
前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接)。 获取不到也没关系,可以通过添加cookie的方式绕过验证码。 一、抓登录cookie 1.登录后会生成一个已登录状态的cookie,那么只需要直接把这个值添加到cookies里面 阅读全文
posted @ 2017-09-27 10:28
年华如梦似流水
阅读(646)
评论(0)
推荐(0)
摘要:
前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? 一、session简介 1.查看帮助文档,贴了一部分,后面省略了 >>import requests>>help(requests.session()) class Session(Se 阅读全文
posted @ 2017-09-27 10:27
年华如梦似流水
阅读(638)
评论(0)
推荐(0)
摘要:
前言 发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的。登录问题解决了,后面都简单了。 一、查看官方文档 1.学习一个新的模块,其实不用去百度什么的,直接用help函数就能查看相关注释和案例内容。 >>import requests 阅读全文
posted @ 2017-09-27 10:24
年华如梦似流水
阅读(1040)
评论(1)
推荐(0)
摘要:
前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来就是学习它了。 一、环境安装 1.用pip安装requests模块 >>pip install requests 二、get请求 1.导入requests后,用get方法就能直接访问url地址,如 阅读全文
posted @ 2017-09-27 09:29
年华如梦似流水
阅读(1420)
评论(0)
推荐(0)

浙公网安备 33010602011771号