微信号:testing51testing

介绍:51Testing软件测试网,人气最旺的软件测试技术门户,提供软件测试社区交流,软件测试博客,人才服务,测试沙龙,测试杂志,测试资料下载等全方位信息服务,是国内最专业的软件测试就业培训、企业服务供应商...

测试女巫自动化进化论之“原始人遮羞布及石器篇”

2019-01-28 17:30 王平平
点击上方蓝色字关注我们~


上一期我们终于到了原始人阶段,虽然还是赤身裸体,以及还没有捕猎的工具,但是最起码我们可以称之为“人”,为什么呢?因为我们有了自动化和手动测试结合的报告,我们的脚本有了“班长”,再也不是一盘散沙了,而且我们还有了基于unittest模块的漂亮的报告了!!而从这一期开始我们疯狂原始人终于有了工具,以及有了遮羞布^_^,我们的第一代工具就是:石器!

  在进入介绍石器之前,我们还是先来总结一下近期工作的心路历程,还记得2018年1月1号微信上有一个用手机号码来预测2018的小程序:我的预测结果是“血拼的一年”,转眼2018年就要过去了,这一期也是51testing杂志2018年的最后一期,回首2018年对于自己真的是血拼的一年:做了一个自动化工具:需要控制三个之前都没听说过的仪器,其中一个是价值几百万的机械手臂=_=,且开发时间相当的紧张;每天都在惴惴不安,一个月期间几乎没有在夜里12点前睡过觉,经常干到凌晨一两点,第二天6点多起床*_*;五一假期期间还在每天看资料,想逻辑;还好,还好,一切虽然真的很不容易但是真的还算顺利:一个非常重要的原因哈哈有一个心脏很大颗的超人协助;虽然期间愤怒过,绝望过,也同时温暖着,满足着,开心着;罗胖的“得到”的吴伯凡老师说过:“痛快”即“痛”过后再“快乐”才是真正的快乐,越来越觉得这种“痛快”上瘾了,这样才会真的觉得自己是在活着;当然今年也升级了我们的自动化框架,期间也是“痛快”感觉十足,甚至哭过,骂过,争执过,但是同时也是满足着,开心着;非常开心,自己可以真的突破自己,真的可以透过现象看问题的本质,真的现在越来越可以控制自己的情绪,最起码在情绪上来的时候,我可以暂时用冷漠来控制它,让我在盛怒下,还可以正常思考:冷漠,有时比失控抓狂真的好太多,哈哈真的要到四十岁才能体会到中年人的淡然,虽然可以进步的空间还是很大。11月底还非常荣幸代表南京团队到总部汇报这一年的成果,这个过程也是“痛快”十足,PPT如何写,汇报如何在15分钟之内抓住老板们的注意力,以及说服老板,真的非常之“痛快”!2018年,真的配的上年初的预言:血拼的一年,每走一步都是一个血印*_*;不过2018年真的能实实在在感受到活着的一年,真的是收获满满!

  好吧,心路历程总结完毕,我们真的可以开始介绍我们的工具,我们的工具是selenium:这个是测试网页的万能神奇!


1.我们先看一下selenium是什么?


  1)它主要提供了网页自动化测试的解决方案,而且是开源的,很多公司都在使用,它的官网:http://docs.seleniumhq.org/


2. Selenium主要的作用


  1)通过自动化的方式测试Web中包含的一些应用

  2)基于Web的一些重复的令人厌烦的管理任务也可以通过它实现自动化测试。

  3)根据自己的需求进行一些客制化的开发。

  4)它包含一套工具使web browser 可以实现自动化测试,这个测试是可以跨平台的测试

  5)它可以被很多语言控制


3.Selenium支持的浏览器


  Selenium与一些比较大的browser供应商是兼容的,这些browser的供应商已经设置了几个步骤目的是使Selenium作为一个browser本地部分。

  对比其它的浏览器自动化测试工具和APIs和frameworks它是一个核心的技术

  它支持的Browser如下:Firefox, IE, Safari, Opera, Chrome

  它支持的语言如下:C# Java Perl PHP Python Ruby Others

  Selenium有一系列的工具可供选择,例如selenium IDE进行录制脚本我们这次主要用的是Selenium Web Driver它可以控制一个浏览器或者本地或远程控制浏览器。


4.Selenium-Web driver API命令和操作

  

       下面介绍一下经常使用的一些API

  1.)读取页面

  第一件事就是你希望使用web driver来访问一个网页,通常的方法

  是”get”即:driver. get(“http://www.google.com”)

  为了避免在页面还未加载完毕就进行某些操作,可以使用Explicit或者

  Implicit函数进行等待,等页面完全加载完毕,再进行一些动作的进

  行。

  2.)定位Web UI界面的元素(即Web Elements)

  每个绑定中的语言都会有”Find Element”和”Find Elements”的方法。第一

  个方法返回的WebElement对象,否则它会丢出一个异常。后面一个方法

  返回的是WebElements的列表,如果没有匹配的列表,见返回一个空的列

  表Find的方法获得一个定位器,或者询问的对象,在web driver中称find

  为By它的方法如下:

  By ID

  这是一个最有效率和比较好的定位元素的方法,比较平常的问题是,元

  素ID的名称不唯一,对于此Page中或者自动产生的ID,此两种情况

  都被避免。建立一个在html 元素的类,是与自动产生ID对比而言是更

  适合的方法。

element = driver.find_element_by_id("coolestWidgetEvah")

or

from selenium.webdriver.common.by import by

element=driver.find_element(by=By.ID,value="coolestWidgetEvah”)

  By Class Name

  这里的Class指的是DOM元素的属性。通常状况下很多DOM元素有

  相同的Class name

  因此发现多重的元素变得更有实际的意义,相比发现第一个element而

  言。

cheeses = driver.find_elements_by_class_name ("cheese")

or

from selenium.webdriver.common.by import by

cheeses = driver.find_elements(By.CLASS_NAME, "cheese")

  By Tag Name

  返回的是这个元素的DOM标签姓名。

frame = driver.find_element_by_tag_name("iframe")

or

from selenium.webdriver.common.by import By

frame = driver.find_element(By.TAG_NAME, "iframe")

  By Name

  找到符合name属性的元素

cheese = driver.find_element_by_name("cheese")

or

from selenium.webdriver.common.by import By

cheese = driver.find_element(By.NAME, "cheese")

By Link Text

  通过匹配可见的文本来找到Link元素

cheese = driver.find_element_by_link_text("cheese")

or

from selenium.webdriver.common.by import by

cheese = driver.find_element(By.LINK_TEXT, "cheese")

  By Partial Link Text

  通过部分匹配可见文本来找到link元素

cheese = driver.find_element_by_partial_link_text ("cheese")

or

from selenium.webdriver.common.by import by

cheese = driver.find_element(By.PARTIAL_LINK_TEXT, "cheese")

  By CSS

  连接姓名使用的定位策略是CSS, 如果Browser不支持CSS则会使用Sizzle.IE6,7和FF3.0目前使用Sizzle。

  注意不是所有的Browser都支持CSS,即使是同一个Browser不同的版本也有可能某个版本支持CSS,某个版本不支持CSS。

cheese = driver.find_element_by_css_selector ("#food span.dairy.aged")

or

from selenium.webdriver.common.by import By

cheese = driver.find_element(By.CSS_SELECTOR, "#food span.dairy.aged")

  By XPATH

  在高层只要有可能Web Driver就会使用Browser本地的XPath能力。在那些本地没有Xpath支持的Browser,我们已经提供了我们自己的执行。这些可能导致一些不期望出现的行为出现。除非你已经了解不同的Xpath引擎有什么不同。

  此函数较复杂不建议使用它。只有在实在没有办法了再考虑用这个函数。


……

文章选自《51测试天地》第五十二期电子杂志

点击阅读原文查看全文


推荐阅读

点击阅读☞基于AI的移动端自动化测试框架的设计与实践

点击阅读☞Jmeter自动化测试常见的问题解决方案汇总

点击阅读☞如何用3步快速实现Appium自动化?

点击阅读☞Docker与自动化测试及其测试实践

点击阅读☞基于自动化用例的精准测试探索

“阅读原文”一起来充电吧!
好看点一下 大家都知道

 
51Testing软件测试网 更多文章 从0到1 | 搭建自动化测试框架的思路及实例演示 Selenium WebDriver上创建 WebDriver测试脚本 【招聘】阿里巴巴/依图科技/Coupang等公司优质岗位放出,年前就可以拿到offer~ 《51测试天地》今天你距离测试大神更近了吗? 你认为软件测试人员获得高薪的关键是什么?
猜您喜欢 陈欧:共享充电宝价值或超聚美,将再投1亿美元,今年投放500万台 会员、楼+正式开抢!实验楼双11最低价攻略 看完还不懂HTTPS我直播吃翔 Java程序员应该知道的10个调试技巧 秒杀应用的MySQL数据库优化