TAG_NAME通过元素的标签名称来定位,例如input标签、button标签、a标签等 。
由于存在大量标签,并且重复性高,因此必须确定其能够代表目标元素唯一性后,方可使用 。如果页面中存在多个相同标签,默认返回第一个标签元素 。一般情况下标签重复性过高 , 要精确定位 , 都不会选择tag_name定位方式 。
语法:
driver.find_element(By.TAG_NAME, "标签名称")
举栗:
driver.find_element(By.TAG_NAME, "input")
LINK_TEXT定位超链接标签 。只能使用精准匹配(即a标签的全部文本内容) , 该方法只针对超链接元素(a 标签),并且需要输入超链接的全部文本信息 。
例如:下面这个a标签的全部文本内容为联系客服
<a href="http://XXX">联系客服</a>
语法:
driver.find_element(By.LINK_TEXT, "a标签的全部文本内容")
举栗:
# author: 测试蔡坨坨# datetime: 2022/10/22 20:27# function: link_text定位import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("http://127.0.0.1")driver.maximize_window()# 点击联系客服driver.find_element(By.LINK_TEXT, "联系客服").click()
PARTIAL_LINK_TEXT定位超链接标签,与LINK_TEXT不同的是它可以使用精准或模糊匹配,也就是a标签的部分文本内容,如果使用模糊匹配最好使用能代表唯一的关键词,如果有多个元素,默认返回第一个 。
例如:下面这个a标签的全部文本内容为“联系客服”,模糊匹配就可以使用a标签的部分文本内容,比如联系、客服、联、服……
<a href="http://XXX">联系客服</a>
语法:
driver.find_element(By.PARTIAL_LINK_TEXT, "a标签的部分文本内容")
举栗:
# author: 测试蔡坨坨# datetime: 2022/10/22 20:34# function: partial_link_text定位器import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("http://127.0.0.1")driver.maximize_window()# 点击联系客服driver.find_element(By.PARTIAL_LINK_TEXT, "联系").click()
XPATH定义XML Path Language 的简称,用于解析XML和HTML 。(不仅可以解析XML还可以解析HTML,因为HTML与XML是非常相像的,XML多用于传输和存储数据,侧重于数据,HTML多用于显示数据并关注数据的外观)
Xpath策略有多种,无论使用哪一种策略,定位的方法都是同一个,不同策略只决定方法的参数的写法 。
Xpath不仅可以用于Selenium,还适用于Appium,是一个万能的定位方式 。
Xpath有一个缺点,就是速度比较慢,比CSS_SELECT要慢很多,因为Xpath是从头到尾一点一点去遍历 。
绝对路径从最外层元素到指定元素之间所有经过元素层级的路径 ,绝对路径是以/html根节点开始 , 使用 / 来分割元素层级的语法,比如:/html/body/div[2]/div/div[2]/div[1]/form/input[1](因为会有多个div标签,所以用索引的方式定位div[2] , 且XPath的下标是从1开始的,例如:/bookstore/bool[1]表示选取属于bookstore子元素的第一个book元素,除了用数字索引外,还可以用last()、position()函数来表达索引 , 例如:/bookstore/book[last()]表示选取属于bookstore子元素的最后一个book元素,/bookstore/book[last()-1]表示选取属于bookstore子元素的倒数第二个book元素,/bookstore/book[position()?]表示选取最前面的两个属于bookstore元素的子元素的book元素)
由于绝对路径对页面结构要求比较严格,因此不建议使用绝对路径 。
语法:
driver.find_element(By.XPATH, "/html开头的绝对路径")
举栗:
# author: 测试蔡坨坨# datetime: 2022/10/23 11:13# function: xpath绝对路径import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()# 打开电商网站driver.get("http://127.0.0.1")driver.maximize_window()# 绝对路径# 搜索框输入 阿迪达斯# XPath的下标是从1开始的driver.find_element(By.XPATH, "/html/body/div[2]/div/div[2]/div[1]/form/input[1]").send_keys("阿迪达斯")# 点击搜索driver.find_element(By.XPATH, "/html/body/div[2]/div/div[2]/div[1]/form/input[2]").click()driver.quit()
相对路径匹配任意层级的元素,不限制元素的位置,相对路径是以 // 开始 , // 后面跟元素名称,不知元素名称时可以使用 * 号代替 , 在实际应用中推荐使用相对路径 。
语法:
driver.find_element(By.XPATH, "//input")driver.find_element(By.XPATH, "//*")
举栗:
# author: 测试蔡坨坨# datetime: 2022/10/23 12:35# function: xpath相对路径import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()# 打开电商网站driver.get("http://127.0.0.1")driver.maximize_window()# 相对路径# XPath相对路径以 // 开头# 搜索框输入 鞋子driver.find_element(By.XPATH, "//input[@class='but1']").send_keys("鞋子")# 点击搜索按钮driver.find_element(By.XPATH, "//*[@class='but2']").click()
推荐阅读
- 三 Selenium+Python系列 - 常见浏览器操作
- 二 Selenium+Python系列 - 元素定位那些事
- selenium4-定位单个页面元素
- 怎么一天学会游泳,游泳教程(游泳老师教女神游泳)
- 如何能够快速的学会游泳(怎样迅速学会游泳)
- 跳舞机怎么玩?我是新手怎么学(怎么快速学会玩跳舞机)
- 魔改xxl-job,彻底告别手动配置任务!
- 新版微信怎么彻底删除微信好友方法(微信如何迁移微信好友)
- 如何学会全面刷机(什么叫刷机)
- 买了个指南针却不懂怎么看(怎么学会看指南针)