selenium WebDriver 定位元素是通过使用 findElement()和 findElements()方法。
findElement()方法返回一个基于指定查寻条件的 WebElement 对象或是抛出一个没有
找到符合条件元素的异常。
findElements()方法会返回匹配指定查询条件的 WebElements 的集合,如果没有找到
则返回为空。
查询方法会将 By 实例作为参数传入。Selenium WebDriver 提供了 By 类来支持各种查询
策略。
下面的表格列出了各种 Selenium WebDriver 支持的定位策略。
策略 | 语法 | 描述 |
By ID | Java: driver.findElement(By.id(<element ID>)) C#: driver.FindElement(By.Id(<elementID>)) Python: driver.find_element_by_id(<elementID>) Ruby: driver.find_element(:id,<elementID>) | 通过元素 ID 属 性定位元素 |
By Name | Java: driver.findElement(By.name(<element name>)) C#: driver.FindElement(By.Name(<element name>)) Python: driver.find_element_by_name(<element name>) Ruby: driver.find_element(:name,<element name>) | 通过元素Name属性定位元素 |
By class name | Java:driver.findElement(By.className(<elemen t class>)) C#: driver.FindElement(By.ClassName(<elementcla ss>)) Python: driver.find_element_by_class_name(<elementc lass>) Ruby: driver.find_element(:class,<element class>) | 通 过 元 素 class name 属性定位元 素 |
By tag name | Java: driver.findElement(By.tagName(<htmltagname> )) C#: driver.FindElement(By.TagName(<htmltagname> )) Python: driver.find_element_by_tag_name(<htmltagnam e>) Ruby: driver.find_element(:tag_name,<htmltagname> | 通过 HTML 标记 名定位元素 |
By link text | Java: driver.findElement(By.linkText(<linktext>)) C#: driver.FindElement(By.LinkText(<linktext >) ) Python: driver.find_element_by_link_text(<linktext >) Ruby: driver.find_element(:link_text,< linktext >) | 通过文本定位链 接 |
By partial link text | Java: driver.findElement(By.partialLinkText(<link text>)) C#: driver.FindElement(By.PartialLinkText(<link text >)) Python: driver.find_element_by_partial_link_text(<l inktext >) Ruby: driver.find_element(:partial_link_text,<lin ktext >) | 通过部分文本定 位链接 |
By CSS | Java: driver.findElement(By.cssSelector(<css selector>)) C#: driver.FindElement(By.CssSelector(<cssselec tor >)) Python: driver.find_elements_by_css_selector (<css selector>) Ruby: driver.find_element(:css,< css selector >) | 通过 CSS 定位元 素 |
By XPath | Java: driver.findElement(By.xpath(<xpath query expression>)) C#: driver.FindElement(By.XPath(<xpath query expression>)) Python: driver.find_elements_by_xpath (<xpath query expression>) Ruby: driver.find_element(:xpath,<xpath query expression>) | 通过 XPath 定位 元素 |