元素定位
元素定位
·有八大定位方法
1.ID定位
通过元素的id属性定位,这是最快且最直接的方式。
# 定位 <input id="username"> 元素
element = driver.find_element(By.ID, "username")
2.Name定位
使用元素的name属性值进行定位。
# 定位 <input name="email"> 元素
element = driver.find_element(By.NAME, "email")
3.Class Name定位
通过class属性值定位元素。
# 定位 <div class="button primary"> 元素
element = driver.find_element(By.CLASS_NAME, "button")
# 或者定位包含多个class的元素
element = driver.find_element(By.CLASS_NAME, "primary")
4.Tag Name定位
根据HTML标签名称(如input、div)定位,但实用性较低,因重复标签较多。
# 定位页面中的第一个 <input> 元素
element = driver.find_element(By.TAG_NAME, "input")
# 定位所有的 <a> 标签
elements = driver.find_elements(By.TAG_NAME, "a")
5.Link Text定位
针对超链接(a标签),通过完整文本内容定位。
# 定位 <a href="...">登录</a> 元素
element = driver.find_element(By.LINK_TEXT, "登录")
6.Partial Link Text定位
与Link Text类似,但支持超链接文本的部分匹配。
# 定位包含"登录"文本的链接
element = driver.find_element(By.PARTIAL_LINK_TEXT, "登录")
7.XPath定位
通过XML路径表达式定位元素,功能强大且支持复杂层级关系。
# 绝对路径定位
element = driver.find_element(By.XPATH, "/html/body/div/form/input")
# 相对路径定位
element = driver.find_element(By.XPATH, "//input[@id='username']")
# 复杂XPath定位
element = driver.find_element(By.XPATH, "//div[@class='form-group']//input[@type='text']")
8.CSS Selector定位
使用CSS选择器语法定位元素,灵活性高且兼容性强。
# 通过ID定位
element = driver.find_element(By.CSS_SELECTOR, "#username")
# 通过class定位
element = driver.find_element(By.CSS_SELECTOR, ".button")
# 通过属性定位
element = driver.find_element(By.CSS_SELECTOR, "input[type='password']")
# 复合选择器
element = driver.find_element(By.CSS_SELECTOR, "div.form-group input.username")
实际应用中,优先推荐ID、Name、Class等唯一属性定位,若元素无明确属性则采用XPath或CSS Selector。
tips:
如果找元素属性或者path困难时候,可以在审核元素F12中使用“Shift + Ctrl + C"定位要找的元素,右键复制相关Path即可