先来看一段项目中出现过的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.写出能运行的脚本很容易,但是我们的目标应该是要写出容易维护的脚本。
分享到:
相关推荐
总结而言,Selenium提供了丰富的元素定位方法,每种方法都有其特点和适用场景。掌握这些方法对于从事自动化测试工作的人来说,是必不可少的技能。通过不断实践和应用这些技术,可以有效地提高测试工作的效率和质量。
除了使用XPath表达式外,Selenium WebDriver还提供了其他七种常见的元素定位方式,这些方式相对简单,易于理解和使用: ##### 1. By.name() `By.name()`方法用于通过元素的`name`属性来定位。例如,假设页面中有一...
Selenium 遇到问题总结 ...使用 Selenium 进行自动化测试时,需要注意一些常见的问题,例如元素定位、工具下载地址、启动 Selenium Server 等。同时,需要解决在 Win7 IE8 下运行 Selenium 时可能出现的问题。
### Selenium元素定位方法 Selenium提供了多种元素定位方式,以便于准确地定位到页面上的元素。以下是常用的元素定位方法: 1. id定位 ```python driver.find_element_by_id("element_id") ``` 2. name定位 ```...
Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素才能进行后续的自动化控制,我在这里将对各种元素定位方式进行总结归纳一下。 这里将统一使用百度首页...
总结,Selenium的元素定位是自动化测试的核心部分,掌握各种定位策略可以帮助我们更高效、准确地找到并操作网页元素。理解每种方法的适用场景和优势,能帮助我们编写出更稳定、可靠的测试脚本。在实际应用中,可能...
### Selenium与Python结合进行元素定位详解 ...掌握Selenium的元素定位和操作方法对于任何从事Web自动化测试的工程师来说都是非常重要的。希望本文能为你在实际工作中使用Selenium进行自动化测试提供帮助。
通过实践,逐渐熟悉各种元素定位方法,如ID、XPath、CSS选择器等。同时,不要忽视异常处理和测试报告的生成,这些都能提升测试的质量和专业性。 在高级使用阶段,了解并掌握Selenium Grid的使用,能够大大提高测试...
- 避免硬编码,如URL和元素定位,可以使用配置文件或环境变量。 总结,Selenium是自动化测试的强大工具,结合Cucumber可以实现清晰易懂的BDD测试。通过熟练掌握Selenium,我们可以提高测试效率,确保软件产品的质量...
Selenium 操作隐藏的元素(Python+Java) Selenium 是一个流行的自动化测试工具,能够模拟用户的行为来操作网页元素。但是在实际应用中,我们经常会遇到隐藏的元素,这些元素因为某些原因而不可见,从而导致 ...
而CSS选择器(CSS Selector)是Selenium进行页面元素定位的一种非常重要的方式。本文将详细介绍如何使用Selenium配合CSS选择器来进行页面元素的精准定位。 #### 二、CSS选择器简介 CSS选择器是用于匹配文档中的...
而Selenium则依赖于元素定位器,通过这些定位器可以有效地找到并操作页面上的各个元素。 总结来说,Python结合Selenium提供了一种高效、灵活的自动化测试解决方案,特别适合Web应用的测试需求。通过Selenium IDE的...
Selenium 自动化文档 Selenium 是一个流行的自动...以上是 Selenium 自动化文档的详细知识点总结,涵盖了元素定位方法、WebDriver 的基本操作、元素操作、XPath 定位器、CssSelector 定位器和层级定位等方面的知识点。
本文总结了自动化测试面试的相关知识点,涵盖了 UI 自动化的框架、元素定位、等待等内容,并提供了实用的面试题和答案。 一、编程基础 1. 单引号、双引号、三引号的区别:单引号和双引号都可以定义字符串,但单...
在`DIV定位`方面,`position:absolute`属性使得`DIV`可以相对于其最近的非静态定位祖先元素进行定位,如果没有这样的祖先,它将相对于整个文档定位。通过设置`top`和`left`属性,我们可以精确地控制弹出层在页面上的...
由于在许多情况下需要使用 XPath 来定位页面元素,因此掌握 XPath 基础知识非常重要。可以参考教程:[http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html]...
总结来说,"WebSelenium_页面和元素封装"这个主题的核心是通过页面对象模型来组织和管理Selenium测试代码,使测试脚本更清晰、更易于维护,同时也降低了因网页结构变化而引发的代码修改成本。通过熟练掌握这一技巧,...