常见控件定位方法
常见控件定位方法
简介
在 Web 自动化测试中,定位是指在进行测试过程中定位网页上的元素位置,例如按钮、文本框、下拉菜单等,以便进行后续操作。定位是自动化测试中至关重要的步骤,它使测试工具能够准确找到并于页面上的元素进行交互,从而模拟用户的实际行为。通过有效的定位,测试脚本能够对页面元素执行各种操作,验证用户的行为并确保其功能的正确性。
为什么要学习定位
- 与页面元素交互:在自动化测试中,测试脚本需要与页面上的元素进行交互,如点击按钮、输入文本等。
- 验证应用程序行为:自动化测试的主要目的之一是验证应用程序的行为是否符合预期,定位方式的准确性直接影响测试脚本对页面元素的操作。
- 提高测试效率:Web 页面的结构可能会随时更改,例如元素的 ID、Class Name 等可能会变化。掌握不同的定位方式可以在元素属性变化时,灵活地修改测试脚本而不影响稳定性。
- 提高测试脚本的可维护性:如果只依赖一种定位方式,当页面结构发生变化时,测试脚本可能会失效。多掌握定位方式可以根据情况选择最合适的定位方式,提高脚本的可维护性。
Selenium 八大定位方式
Selenium 提供了八种定位方式:
https://www.selenium.dev/documentation/webdriver/elements/locators/
定位方式 | 描述 |
---|---|
class name | class 属性对应的值 |
css selector(重点) | css 表达式 |
id(重点) | id 属性对应的值 |
name(重点) | name 属性对应的值 |
link test | 查找其可见文本与搜索值匹配的锚元素 |
partial link test | 查找其可见文本包含搜索值的锚元素。如果多个元素匹配,则只会选择第一个元素 |
tag name | 标签名称 |
xpath(重点) | xpath 表达式 |
Python 语法格式
driver.find_element(By.ID, "su")
driver.findElement(By.id("su"));
创建定位器
要使用 Selenium 在网页上操作网页元素,需要找到它们在网页上的位置。Selenium 提供了上述提到的方式,通过这些方式可以在页面上定位元素。为了理解和创建定位器,我们将使用以下 HTML 代码片段。
<html>
<body>
<style>
.information {
background-color: white;
color: black;
padding: 10px;
}
</style>
<h2>Contact Selenium</h2>
<form action="/action_page.php">
<input type="radio" name="gender" value="m" />Male
<input type="radio" name="gender" value="f" />Female <br />
<br />
<label for="fname">First name:</label><br />
<input
class="information"
type="text"
id="fname"
name="fname"
value="Jane"
/><br /><br />
<label for="lname">Last name:</label><br />
<input
class="information"
type="text"
id="lname"
name="lname"
value="Doe"
/><br /><br />
<label for="newsletter">Newsletter:</label>
<input type="checkbox" name="newsletter" value="1" /><br /><br />
<input type="submit" value="Submit" />
</form>
<p>
To know more about Selenium, visit the official page
<a href="www.selenium.dev">Selenium Official Page</a>
</p>
</body>
</html>
class name
HTML 页面的元素可以具有 class 属性,可以通过使用 Selenium 中提供的 classname 来识别这些元素。
Python:
driver.find_element(By.CLASS_NAME, "information")
Java:
driver.findElement(By.className("information"));
css selector
使用 css selector 来进行元素定位(通过比对元素的 id,class,tagname 以及其他属性来完成定位)
Python:
driver.find_element(By.CSS_SELECTOR, "#fname")
Java:
driver.findElement(By.cssSelector("#fname"));
id
通过使用网页上元素的 ID 属性来定位它。通常情况下,元素的 ID 属性在网页上应该是唯一的。使用 id
来识别“姓氏(Last Name)”字段。
Python:
driver.find_element(By.ID, "lname")
Java:
driver.findElement(By.id("lname"));
name
通过使用网页上元素的 NAME 属性来定位。通常情况下,元素的 NAME 属性在网页上应该是唯一的。通过使用 name
来识别“新闻简讯(Newsletter)”复选框。
Python:
driver.find_element(By.NAME, "newsletter")
Java:
driver.findElement(By.name("newsletter"));
link test
通过链接来定位:(链接文本定位器:链接文本是链接显示的文本内容)
Python :
driver.find_element(By.LINK_TEXT, "Selenium Official Page")
Java:
driver.findElement(By.linkText("Selenium Official Page"));
partial link test
通过部分链接文本来定位:(链接文本定位器:链接文本是链接显示的文本内容)
Python:
driver.find_element(By.PARTIAL_LINK_TEXT, "Official Page")
Java:
driver.findElement(By.partialLinkText("Official Page"));
tag name
可以使用 HTML 标签本身作为定位器,在页面上识别网页元素。通过使用 tag name
, HTML 标签“a”来识别链接。
Python:
driver.find_element(By.TAG_NAME, "a")
Java:
driver.findElement(By.tagName("a"));
xpath
一个 HTML 文档可以被视为一个 XML 文档,可以通过使用 XPath 来定位感兴趣的元素,它是到达目标元素的路径。
/html/form/input[1]
:这将返回值为男性的单选按钮。或者 XPath 可以是相对的。
//input[@name='fname']。
:这将返回名字文本框。让我们使用XPath
来创建定位器,以定位女性单选按钮。
Python:
driver.find_element(By.XPATH, "//input[@value='f']")
Java:
driver.findElement(By.xpath("//input[@value='f']"));