如何对测试对象进行定位

来源:互联网 发布:淘宝全部订单显示不全 编辑:程序博客网 时间:2024/04/29 17:24

首先,谢谢http://www.cnblogs.com/fnng/p/3696925.html的分享。
花了2周时间,看了几本关于这方面的书,基本走完了Selenium+Python webdriver的第一遍,目前能够搭建环境,做到对任何网页的控件定位以及进行自动化测试,并能够实现将测试结果生成测试报告以及数据参数化等知识点。
前面几篇博文是亲自动手反复实现过。通过实践练习,对Web UI自动化测试有了一定的熟悉。再结合曾经自学学过的QTP,两者在测试思想上是共通的。QTP工具需要的是能够对测试对象识别,Selenium需要对测试对象进行准确定位,这样才能进行下一步的测试。
在学习过程中,一定要注意,不应急于求成,而忘记了为什么出发。走过后,记得回过头来对曾经学习过的,对于经常遇到的问题,来再次进行梳理。
我们在测试过程中,经常会遇到,因为对测试对象的定位不准确,导致出错,脚本无法继续进行下去。而且我们在实际测试过程中,会遇到各种不同的对象元素。那么如何对测试对象进行准确定位是一个需要掌握的问题。测试对象的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,因此元素定位就显得非常重要。
webdriver 提供了一系列的元素定位方法,常用的有以下几种,如图所示:
这里写图片描述
示例:对搜狗网页的搜索编辑框和“搜索”按钮进行定位的方法
根据上述的方法,可以见到:
这里写图片描述

那么从上图,可以看到对该对象可以进行id,name,class的定位。即采用:
find_element_by_id(“query”)
find_element_by_name(“query”)
find_element_by_class_name(“w_now”)
这里写图片描述
于是,可以得到:
find_element_by_xpath(“//*[@id=’query’]”)
对于微信的link控件,如图:
这里写图片描述
find_element_by_link_text(“微信”)
也就说,理论上来说,都可以通过以上的方式都能定位该对象。但是,实际上,有时id,name,class,link定位都会失败,此时,需要使用绝对路径xpath,或许可以解决问题。
使用id,name,class,link定位的优点,输入的内容简单,便于脚本的维护,缺点在于定位控件不一定是唯一性。xpath缺点在于维护脚本不容易。XPath 是一种在 XML 文档中定位元素的语言。因为 HTML 可以看做 XML 的一种实现,所以 selenium 用户可以使用这种强大语言在 web 应用中来定位元素。所以,当我们所要定位的元素很难找到合适的方式时,都可以通这种绝对路径的方式位,缺点是当元素在很多级目录下时,我们不得不要写很长的路径,而且这种方式难以阅读和维护。
对于选择使用css定位,如图:
这里写图片描述
鼠标右键定位在此Radio上,再选择“Inspect Element”得到:
这里写图片描述
这样可以使用,
find_element_by_css_selector(“input[value=’m’]”)
对于选择使用css定位的测试对象,一般是指:Radio,Checkbox等具有value的控件。

技巧:一般先从id,name,class,link开始,如果遇到不能准确定位时,再通过换定位方法,去准确定位测试对象。选择tag name来定位通常是不唯一的,通常情况不选择tag name。切记:测试对象的定位在一个页面中是唯一的,并且只能被某个属性(id,class,name等)唯一定位。

0 0
原创粉丝点击