`

对于Selenium元素定位的总结

阅读更多
先来看一段项目中出现过的selenium代码
public void setAvailability(){
        selenium.click("//td[2]/div/input");
        selenium.type("//td[3]/div/input", "23");
        selenium.click("//td[4]/div/input");
        selenium.type("//td[5]/div/input", "23");
        selenium.click("//td[6]/div/input");
        selenium.type("//td[7]/div/input", "43");
        selenium.click("//tr[2]/td[2]/div/input");
        selenium.type("//tr[2]/td[3]/div/input", "12");
        selenium.click("//tr[2]/td[4]/div/input");
        selenium.type("//tr[2]/td[5]/div/input", "4");
        selenium.click("//tr[2]/td[6]/div/input");
        selenium.type("//tr[2]/td[7]/div/input", "3");
}


这个代码是出自某developer之手,由于赶进度,匆忙写出的.
这样的代码至少会有两个很严重的问题
1.代码可读性,非常差,即使看到了测试的页面,也很难想象出这些元素到底跟哪个页面相对应.维护起来非常困难.
2.这个代码如果用IE运行的,将非常非常得慢....
第一次看到这个代码,我一度很困惑程序怎么能正确得找得到页面中的元素.

对于这个问题,理想中的解决方案其实很简单,就是让项目中的developer养成良好的编程习惯,把每个页面元素,添加一个唯一的有意义的ID或者Name,这样就能解决如上两个问题,这个时候就体现出team work的重要性了.

再针对上面这个例子,如果我们不能让developer去增加ID的时候,代码依然可以写得更加高效,看了下页面的源代码,发现每个INPUT的父节点DIV都是有ID的,所以代码可以这样改进:
public void setAvailability() {

	    selenium.click("//div[@id='row1']/input");
	    selenium.type("//div[@id='row2']/input", "23");
        selenium.click("//div[@id='row3']/input");
        selenium.type("//div[@id='row4']/input", "23");
        selenium.click("//div[@id='row5']/input");
        selenium.type("//div[@id='row6']/input", "43");
 
}

上面的代码由于在Xpath中增加的ID,程序解析Xpath的速度必然会加快,可读性也会相对提高。

总结:
1.尽量使用ID或者name去定位元素,如果这个元素没有ID或者Name,那么就是用它最近的父节点的ID或者Name去定位。
2.写自动化脚本不是一个人的事情,是一个团队的事情,合作能更好,更轻松得完成任务
3.写出能运行的脚本很容易,但是我们的目标应该是要写出容易维护的脚本。

分享到:
评论

相关推荐

    Python+selenium环境搭建&元素定位总结

    Python+selenium环境搭建&元素定位总结,详细说明环境搭建过程和元素定位的方法

    selenium如何定位元素位置

    众所周知,selenium自动化测试是基于UI的一种典型的测试策略,如何准确定位需要操作的浏览器元素或控件是自动化测试非常重要的工作,本文总结了常用的UI控件的定位方法,希望大家可以参考并进一步扩展

    Selenium元素定位的30种方式(史上最全)

    Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素才能进行后续的自动化控制,我在这里将对各种元素定位方式进行总结归纳一下。 这里将统一使用百度首页...

    python中通过selenium简单操作及元素定位知识点总结

    在本篇文章里小编给大家整理的是关于python中通过selenium简单操作及元素定位的知识点,有需要的朋友们可以学习下。

    Selenium Webdriver学习总结

    webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要高些,使用id,name属性定位元素是最可靠,效率最高的一种办法。

    Selenium定位元素操作示例

    主要介绍了Selenium定位元素操作,结合实例形式总结分析了Selenium通过ID、name、XPath、标签名称、类名等进行元素定位操作的相关实现技巧,需要的朋友可以参考下

    selenium自动化文档

    selenium自动化文档 总结了常用元素定位方法、及架构,包括了各种在WEB自动化上遇到的问题,及常见问题的处理

    selenium自动化测试面试总结.docx

    根据自己的学习和面试经历,总结了一些自动化测试面试的内容,里面包含UI自动化的框架、元素定位、等待等内容,比较实用。面试一般都是这些内容,只要自己能够流畅的表达出来就ok。

    webdriver元素定位笔记

    参考多本书籍和资料整理的元素定位总结内容,设置字体较小,可放大来看。有写内容可能布局不是很合理,但是我所遇到和看到的不同定位的方法都总结在上面了。分享给大家。

    python+selenium select下拉选择框定位处理方法

    总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询; 二、直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPath,使用find_element_by_xpath定位; driver = ...

    python selenium xpath定位操作

    xpath是一种在xm文档中定位的语言,详细简介,请自行参照百度百科,本文主要总结一下xpath的使用方法,个人看法,如有不足和错误,敬请指出。 注意:xpath的定位 同一级别的多个标签 索引从1开始 而不是0 1. 绝对...

    selenium2.0中常用的python函数汇总

    本文总结分析了selenium2.0中常用的python函数。分享给大家供大家参考,具体如下: 新建实例driver = webdriver.Firefox() 此处定位均使用的百度首页输入框 1.通过标签属性Id查找元素 方法:find_element_by_id...

    python+pyqt5+selenium的web自动化小工具,还在逐步完善:(一)UI界面的完善

    用户在界面上输入操作名称,关键字,定位方式,定位元素,操作的值,点击执行后,新开线程,将测试步骤拼接成actiion的名字,直接使用eval执行对应函数,调用selnium打开浏览器,实现自动化执行. 用例保存直接存为...

    自动化测试面试题总结.docx

    5,元素定位的8种方式 6,如果一个元素无法定位,一般会考虑哪些原因 7,driver.close()和driver.quit()的区别 8,自动化脚本断言 9,判断页面元素是否存在 10,js在web自动化中的作用展示 11,自动化代码优化 12,...

Global site tag (gtag.js) - Google Analytics