Selenium – 定位符





5.00/5 (1投票)
Selenium - 定位符。
在使用 Selenium 创建自动化测试时,最常见的事情就是反复查找您希望与之交互的元素的定位器。
这绝对是一项繁琐的任务。有一些自动化的页面抓取工具可以为您完成此操作(效果如何尚有争议),我们将在后面创建我们自己的工具来完成此操作。但在大多数情况下,您需要自己检查每个元素并查找定位器。
问题是,一个元素通常可以有多个定位器,而弄清楚哪个定位器适合您自己使用,这本身就是一项任务。 首先,让我们介绍一下如何获取定位器。 我建议使用 Chrome,因为 Chrome 一直是最简单快捷的(就我个人而言)获取元素定位器的方式。 导航到您要定位元素的页面,右键单击该元素,然后选择“检查元素”。
您应该看到类似以下内容(您可能需要滚动代码框才能看到所有内容)
<input class="gsfi" id="lst-ib" maxlength="2048" name="q" autocomplete="off"
title="Search" type="text" value=""
aria-label="Search" aria-haspopup="false" role="combobox"
aria-autocomplete="list" style="border: none; padding: 0px; margin: 0px; height: auto;
width: 100%; background:
url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D")
transparent; position: absolute; z-index: 6; left: 0px; outline: none;"
dir="ltr" spellcheck="false">
这是 Google 主页上的搜索栏。 我们可以看到什么? 第一行包含一个 id 属性,这是一个好消息。 Id
是尽可能使用的最佳定位器,我们稍后将介绍原因。 其他有用的属性包括类名和标题。 其余的可以忽略,因为我们对此不感兴趣。
除了查看这个之外,您还需要知道另一件事。 如果您再次右键单击 HTML 代码,您会看到另一个菜单,显示“复制->”,如果您将鼠标悬停在此菜单上,我们可以看到“复制选择器”和“复制 XPath”。 这两者都非常有用,您需要使用它们。
那么,我们的定位器类型有哪些?
- Id = 这是最简洁、最可靠和最受欢迎的定位器。 如果您的元素有一个定位器,那就高兴吧,因为您受到了欣赏您的优秀 Web 开发人员的祝福。 这些不仅是简洁而短的定位器,而且几乎总是描述性的和清晰的,这使得它们非常适合在您的页面对象类中使用。
- 类名 = 非常容易理解,一个元素将属于一个类,并且该类的名称可以用作定位器
- CSS 选择器 = 您会对这些产生爱恨交加的关系。 它们在内容较少的页面上使用起来不错,并且如果您的元素具有 id,那么您通常只需在 id 前面使用一个哈希符号即可获得 CSS 选择器。 但是,找到一个包含大量嵌套元素、表格或框架的页面,它们会突然变成一场噩梦。 它们变得非常冗长和不整洁,并且使用起来非常脆弱,因为即使对网页进行最小的更改也可能破坏您的定位器。
- 链接文本/部分链接文本 = 如果您的元素只是一个
string
或一个链接,例如在菜单中,那么您可以使用该string
文本作为定位器。 - 名称 = 元素的名称,但这并非总是存在于元素上,如上面的 Google 示例所示。
- XPath = 与 CSS 选择器类似,在内容繁重的 Web 应用程序中使用它们可能很糟糕。
一旦您有了想要使用的定位器,以下是我们如何使用 Selenium 找到它。
_driver.FindElement(By.Id("username"));
_driver.FindElement(By.ClassName("user form"));
_driver.FindElement(By.CssSelector("#username"));
_driver.FindElement(By.LinkText("Learn Automation"));
_driver.FindElement(By.Name("Locator"));
_driver.FindElement(By.PartialLinkText("Learn"));
_driver.FindElement(By.TagName("a"));
_driver.FindElement(By.XPath("//*[@id='panel']/div/h1"));
如前所述,您编写的测试越多,就会对更喜欢使用的定位器产生偏好。 我强烈建议尽可能使用 id,尤其是在刚开始时。
如前所述,XPath 可能非常复杂,但它也可能非常强大。 它们可用于查找最棘手的元素,并且可以具有类似代码的语法或表达式来对元素进行复杂的搜索。 我们将在稍后介绍这一点,但我绝对不会一开始就担心这一点。
帖子 Selenium – 定位器 首次出现在 Learn Automation。