1、常见控件定位方法
目录
- HTML铺垫
- Selenium八大定位方式
- 常用定位方式练习
HTML铺垫
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试人论坛</title>
</head>
<body>
<a href="https://ceshiren.com/" class="link">链接</a>
</body>
</html>
- 标签:
<a>
- 属性:href
- 类属性: class
Selenium定位方式
Selenium提供了八种定位方式:Locator strategies | Selenium
方式 | 描述 |
---|---|
class name | class 属性对应的值 |
css selector(重点) | css 表达式 |
id(重点) | id 属性对应的值 |
name(重点) | name 属性对应的值 |
link text | 查找其可见文本与搜索值匹配的锚元素 |
partial link text | 查找其可见文本包含搜索值的锚元素。如果多个元素匹配,则只会选择第一个元素。 |
tag name | 标签名称 |
xpath(重点) | xpath表达式 |
selenium 常用定位方式
#格式:
driver.find_element_by_定位方式(定位元素)
driver.find_element(By.定位方式, 定位元素)
# 示例,两种方式作用一模一样
# 官方建议使用下面的方式
driver.find_element_by_id("su")
driver.find_element(By.ID, "su")
通过 id 定位
- 格式:
driver.find_element(By.ID, "ID属性对应的值")
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
def id_position_method():
# 实例化chromedriver
driver = webdriver.Chrome()
# 打开网站
driver.get('http://www.ceshiren.com')
# 等待一秒
time.sleep(1)
# 点击“精华帖”
driver.find_element(By.ID,"ember35").click()
# 等待两秒
time.sleep(2)
if __name__ == '__main__':
id_position_method()
name 定位
- 格式:
driver.find_element(By.NAME, "Name属性对应的值")
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
def name_position_method():
# 实例化chromedriver
driver = webdriver.Chrome()
# 打开网站
driver.get('http://www.baidu.com')
# 等待一秒
time.sleep(1)
# 点击更多
driver.find_element(By.NAME,"tj_briicon").click()
# 等待两秒
time.sleep(2)
if __name__ == '__main__':
name_position_method()
css selector 定位
- 格式:
driver.find_element(By.CSS_SELECTOR, "css表达式")
- 复制绝对定位
- 编写 css selector 表达式(后面章节详细讲解)
xpath 定位
- 格式:
driver.find_element(By.XPATH, "xpath表达式")
- 复制绝对定位
- 编写 xpath 表达式(后面章节详细讲解)
link 定位
- 格式:
driver.find_element(By.LINK_TEXT,"文本信息")
from selenium import webdriver
from selenium.webdriver.common.by import By
def web_locate():
# 首先需要实例化driver对象,Chrome()一定要加括号
driver = webdriver.Chrome()
# 打开一个网页
driver.get("https://vip.ceshiren.com/#/ui_study")
# 1. ID定位, 第一个参数传递定位方式,第二参数传递定位元素,调用这个方法的返回值为WebElement
# web_element = driver.find_element(By.ID, "locate_id")
# web_element = driver.find_element_by_id("locate_id")
# print(web_element)
# 2. Name定位,
# 如果没有报错,证明元素找到了
# 如果报错 no such element 代表,元素定位可能出现错
# driver.find_element(By.NAME, "locate11111") #错误示例
# driver.find_element(By.NAME, "locate")
# 3. Css 选择器定位
# driver.find_element(By.CSS_SELECTOR, "#locate_id > a > span")
# 4. xpath 表达式定位
# driver.find_element(By.XPATH, '//*[@id="locate_id"]/a/span')
# 5. 通过链接文本的方式 (1) 元素一定是a标签 2. 输入的元素为标签内的文本
# driver.find_element(By.LINK_TEXT, "元素定位")
if __name__ == '__main__':
web_locate()