Selenium Web元素定位方法

Selenium是用于Web应用测试的自动化测试框架,可以实现跨浏览器和跨平台的Web自动化测试。Selenium通过使用WebDriver API来控制web浏览器,每个浏览器都都有一个特定的WebDriver 驱动,处理与Selenium和浏览器之间的通信。

实现Web页面自动化控制的先决条件是定位到正确的Web页面元素,WebDriver提供了8种不同的Web元素定位方法:

Locator Description
id   ID属性,最常用的定位方法,每个元素的id应该是唯一的  
css selector   CSS 选择器  
xpath   xpath表达式定位元素  
name   NAME属性,与id定位类似  
link text   仅用于超链接文本  
partial link text   使用方法和link text相同,partial link 只截取部分文字即可  
tag name   通过HTML标签名定位  
class name   使用类名定位,不能使用复合类名  
ID定位

Selenium Web元素定位方法

python代码:

element = self.driver.find_element_by_id("kw") element = self.driver.find_element(By.ID,"kw").send_keys("test") NAME定位

Selenium Web元素定位方法

python代码:

element = self.driver.find_element_by_name("wd") Link Text定位

Selenium Web元素定位方法

python代码:

element = self.driver.find_element_by_link_text("学术") Partial Link Text定位

使用部分文本来定位

直接使用“123”来定位:

Selenium Web元素定位方法

python代码:

element = self.driver.find_element_by_partial_link_text(**"123"**) Xpath定位

XPath 使用路径表达式来选取 XML 文档中的节点或节点集。具体语法参考:https://www.w3school.com.cn/xpath/xpath_syntax.asp

比如我们定位“资讯”:

Selenium Web元素定位方法

可以在console中输入JS代码:$x('//*[@id="s_tab"]//a[1]')

这样就可以找到资讯对应的元素:

Selenium Web元素定位方法

python代码:

element = self.driver.find_element_by_xpath('//*[@id="s_tab"]//a[1]') CSS Selector定位

CSS选择器是一种字符串模式,基于HTML标签,id,类和属性的组合来标识元素。

具体语法参见:https://www.runoob.com/cssref/css-selectors.html

我们依然定位“资讯”:

在console中输入:$('#s_tab a:nth-child(2)')

Selenium Web元素定位方法

python代码:

element = self.driver.find_element_by_css_selector("#s_tab a:nth-child(2)") 完整测试代码 #!/usr/bin/python3 # -*-coding:utf-8-*- from time import sleep import pytest from selenium import webdriver from selenium.webdriver.common.by import By class TestLocator(): def setup(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(5) # self.driver.maximize_window() def teardown(self): self.driver.quit() def test_id(self): self.driver.get("https://www.baidu.com/") element = self.driver.find_element_by_id("kw") element.send_keys("test") # self.driver.find_element(By.ID,"kw").send_keys("test") assert element.get_attribute("value") == "test" def test_name(self): element = self.driver.find_element_by_name("wd") element.send_keys("test") assert element.get_attribute("value") == "test" def test_linktext(self): self.driver.get("https://www.baidu.com/") element = self.driver.find_element_by_link_text("学术") element.click() sleep(5) def test_partial_link_text(self): self.driver.get("https://www.baidu.com/") element = self.driver.find_element_by_partial_link_text("123") element.click() sleep(5) def test_xpath(self): self.driver.get("https://www.baidu.com/") self.driver.find_element_by_id("kw").send_keys("test") sleep(2) self.driver.find_element_by_id("su").click() sleep(2) element = self.driver.find_element_by_xpath('//*[@id="s_tab"]//a[1]') element.click() sleep(10) def test_css(self): self.driver.get("https://www.baidu.com/") self.driver.find_element_by_id("kw").send_keys("test") sleep(2) self.driver.find_element_by_id("su").click() sleep(2) element = self.driver.find_element_by_css_selector("#s_tab a:nth-child(2)") element.click() if __name__ == '__main__': pytest.main() 总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwfjp.html