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

发表于:2019-1-28 08:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王平平    来源:51Testing软件测试网原创

  上一期我们终于到了原始人阶段,虽然还是赤身裸体,以及还没有捕猎的工具,但是最起码我们可以称之为“人”,为什么呢因为我们有了自动化和手动测试结合的报告,我们的脚本有了“班长”,再也不是一盘散沙了,而且我们还有了基于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引擎有什么不同。
  此函数较复杂不建议使用它。只有在实在没有办法了再考虑用这个函数。

  ......
查看更多精彩内容,请点击下载:
http://www.51testing.com/html/26/n-4456726.html
版权声明:本文出自《51测试天地》第五十二期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号