当前位置: 首页 > news >正文

从 0 到 1 搭建 Python 语言 Web UI自动化测试学习系列 6--基础知识 2--常用元素定位 2

测试学习记录,仅供参考!

selenium八大常用元素定位

元素定位是 web ui 自动化最关键的一部分;

七、CSS_SELECTOR 元素定位

18、css_selector 元素定位, css 是一种语言,用来描述 html、xml 的元素显示样式,在 css 语言中有 css 选择器,同样的在 selenium 中也可以使用这种选择器来定位元素;

1)、 基本选择器
(1)、通过 id 选择器定位

若选择使用 css 选择器元素定位的话,根据标签中是否有这个 id 值,有的话则可以使用这种方式去定位,id 使用‘#’井号开始,后面跟上属性值;

driver.find_element(By.CSS_SELECTOR, '#username')        # 查找具有 id 属性的标签

19、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第七种 CSS_SELECTOR 元素定位
# 1、 通过 id 选择器定位--用 # 井号开头,后面跟上属性值
ele = driver.find_element(By.CSS_SELECTOR, '#username')
print(ele)
(2)、 类 选择器定位

20、 根据标签中是否有 class 属性,有的话则可以使用这种类选择器方式去定位,使用 . 点表示,后面跟上属性值;

driver.find_element(By.CSS_SELECTOR, '.inputBg')

21、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第七种 CSS_SELECTOR 元素定位
# 1、 通过 id 选择器定位--用 # 井号开头,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '#username')# 2、 类 选择器定位--用 . 点表示,后面跟上属性值
ele = driver.find_element(By.CSS_SELECTOR, '.inputBg')
print(ele)
(3)、 标签 选择器定位

22、 直接去写标签名即可,跟标签名元素定位(tag_name)一样,只是不同的定位方式;

driver.find_element(By.CSS_SELECTOR, 'input')     # 查找第一个 <input> 标签

23、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第七种 CSS_SELECTOR 元素定位
# 1、 通过 id 选择器定位--用 # 井号开头,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '#username')# 2、 类 选择器定位--用 . 点表示,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '.inputBg')# 3、 标签 选择器定位--直接去写标签名
ele = driver.find_element(By.CSS_SELECTOR, 'input')     # 查找第一个 <input> 标签
print(ele)

24、 像是其他比较复杂的元素定位,可以直接鼠标右键拷贝;

例如:Copy selector 会自动把这个元素的选择器给复制下来 #username 以找到元素里面第一个 id 值;

2)、 属性选择器

25、 字面意思理解就是通过标签里面的属性值去定位选择到这个标签;

(1)、单个属性定位

以 用户名 type 属性为例;

driver.find_element(By.CSS_SELECTOR, '[type="text"]')     # 单个属性定位

26、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第七种 CSS_SELECTOR 元素定位
# 1、 基本选择器
# 1)、 通过 id 选择器定位--用 # 井号开头,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '#username')        # 查找具有 id 属性的标签# 2)、 类 选择器定位--用 . 点表示,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '.inputBg')# 3)、 标签 选择器定位--直接去写标签名
driver.find_element(By.CSS_SELECTOR, 'input')     # 查找第一个 <input> 标签# 2、 属性选择器
# 4)、 单个属性定位--语法,先写一个 [] 中括号--再加上 属性 和 属性值
ele = driver.find_element(By.CSS_SELECTOR, '[type="text"]')     # 单个属性定位
print(ele)
(2)、多个属性定位

27、 属性选择器有很多种组合,根据标签中有多少个属性,有多少就可以写多少个;以 用户名 type 、id 属性为例;

driver.find_element(By.CSS_SELECTOR, '[type="text"][id="username"]')     # 多个属性定位
# 先写一个标签名,再写属性--标签名+属性选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input[class="inputBg"]') 
# 通过标签名+ID选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input#username')
# 通过标签名+类选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input.inputBg')

28、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第七种 CSS_SELECTOR 元素定位
# 1、 基本选择器
# 1)、 通过 id 选择器定位--用 # 井号开头,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '#username')        # 查找具有 id 属性的标签# 2)、 类 选择器定位--用 . 点表示,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '.inputBg')# 3)、 标签 选择器定位--直接去写标签名
driver.find_element(By.CSS_SELECTOR, 'input')     # 查找第一个 <input> 标签# 2、 属性选择器
# 4)、 单个属性定位--语法,先写一个 [] 中括号--再加上 属性 和 属性值
driver.find_element(By.CSS_SELECTOR, '[type="text"]')     # 单个属性定位# 5)、 多个属性定位--属性务必要带上中括号
driver.find_element(By.CSS_SELECTOR, '[type="text"][id="username"]')     # 多个属性定位
# 先写一个标签名,再写属性--标签名+属性选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input[class="inputBg"]')
# 通过标签名+ID选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input#username')
# 通过标签名+类选择器组合定位
ele = driver.find_element(By.CSS_SELECTOR, 'input.inputBg')
print(ele)
(3)、通过标签的层级定位(表格层级定位)

29、 从上往下定位的话,通过找到层级一级一级往下定位

例如找table表格下面的tr标签

# 首先从第一级父元素table--然后跟上符号 > 大于号--然后下一级的标签tbody--再找下一级的tr
driver.find_element(By.CSS_SELECTOR, 'table>tbody>tr')

30、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第七种 CSS_SELECTOR 元素定位
# 1、 基本选择器
# 1)、 通过 id 选择器定位--用 # 井号开头,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '#username')        # 查找具有 id 属性的标签# 2)、 类 选择器定位--用 . 点表示,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '.inputBg')# 3)、 标签 选择器定位--直接去写标签名
driver.find_element(By.CSS_SELECTOR, 'input')     # 查找第一个 <input> 标签# 2、 属性选择器
# 4)、 单个属性定位--语法,先写一个 [] 中括号--再加上 属性 和 属性值
driver.find_element(By.CSS_SELECTOR, '[type="text"]')     # 单个属性定位# 5)、 多个属性定位--属性务必要带上中括号
driver.find_element(By.CSS_SELECTOR, '[type="text"][id="username"]')     # 多个属性定位
# 先写一个标签名,再写属性--标签名+属性选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input[class="inputBg"]')
# 通过标签名+ID选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input#username')
# 通过标签名+类选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input.inputBg')# 通过标签层级定位--例如找table表格下面的tr标签--首先从第一级父元素table--然后跟上符号 > 大于号--然后下一级的标签tbody--再找下一级的tr
ele = driver.find_element(By.CSS_SELECTOR, 'table>tbody>tr')
print(ele)

31、 因为有很多个 tr,怎么去定位第一个 tr 里面的第二个 td 呢?还是以 用户名 为例;

# 表格层级定位--tr跟上:冒号写first-child-- 空格 td:nth-child(2) 标签、属性driver.find_element(By.CSS_SELECTOR, 'table>tbody>tr:first-child td:nth-child(2) input[type="text"]')

32、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第一个 ID 元素定位
driver.find_element(By.ID, 'username')# 第二个 NAME 属性定位
driver.find_element(By.NAME, 'username')# 第三个 CLASS_NAME 元素定位
driver.find_element(By.CLASS_NAME, 'inputBg')# 第四种 TAG_NAME 元素定位
driver.find_element(By.TAG_NAME, 'input')# 第五种 LINK_TEXT 完整超链接文本定位--单击操作 click()
driver.find_element(By.LINK_TEXT, '我已有账号,我要登录')# 第六种 PARTIAL_LINK_TEXT 部分超链接文本定位--单击操作 click() 点击效果
driver.find_element(By.PARTIAL_LINK_TEXT, '我要登录').click()# 第七种 CSS_SELECTOR 元素定位
# 1、 基本选择器
# 1)、 通过 id 选择器定位--用 # 井号开头,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '#username')        # 查找具有 id 属性的标签# 2)、 类 选择器定位--用 . 点表示,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '.inputBg')# 3)、 标签 选择器定位--直接去写标签名
driver.find_element(By.CSS_SELECTOR, 'input')     # 查找第一个 <input> 标签# 2、 属性选择器
# 4)、 单个属性定位--语法,先写一个 [] 中括号--再加上 属性 和 属性值
driver.find_element(By.CSS_SELECTOR, '[type="text"]')     # 单个属性定位# 5)、 多个属性定位--属性务必要带上中括号
driver.find_element(By.CSS_SELECTOR, '[type="text"][id="username"]')     # 多个属性定位
# 先写一个标签名,再写属性--标签名+属性选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input[class="inputBg"]')
# 通过标签名+ID选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input#username')
# 通过标签名+类选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input.inputBg')# 通过标签层级定位--例如找table表格下面的tr标签--首先从第一级父元素table--然后跟上符号 > 大于号--然后下一级的标签tbody--再找下一级的tr
driver.find_element(By.CSS_SELECTOR, 'table>tbody>tr')# 表格层级定位--例如找找table表格下面的第一个tr标签下第二个td--tr跟上:冒号写first-child-- 空格 td:nth-child(2) 标签、属性
ele = driver.find_element(By.CSS_SELECTOR, 'table>tbody>tr:first-child td:nth-child(2) input[type="text"]')
print(ele)
3、4)、模糊定位、其他

33、css 选择器有许多内容,这里仅列举一些比较常用的,模糊定位平时用的比较少,其他的烦请自行学习了解;

八、XPATH 定位方式

34、xpath 定位是最重要的一种元素定位方式,用 xpath 可以找到前面七种定位的内容,xpath 定位下面又包含了很多种定位,比如常见的有以下几种;

1)、 绝对路径定位

35、 通过从根元素开始一级一级向下定位,路径中使用元素的标签名和索引;使用一个 斜杠 / 代表使用的绝对路径;绝对路径定位不建议使用,因为一级一级向下找太废时间了;

# 绝对路径定位,一个斜杠 / 代表是绝对路径 --不建议使用
driver.find_element(By.XPATH, '/html/body/div[7]/div[1]/form/table/tbody/tr[1]/td[2]/input')
# 优化一下--两个斜杠 // 代表是相对路径
driver.find_element(By.XPATH, '/html/body//input[@name="username"]').send_keys('这是一个测试xpath定位')

小技巧:若是一级一级找不准确,建议直接右键复制完整的 xpath 路径;

中文版 edge 浏览器;

英文版下的 chrome 浏览器;

36、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第八种 XPATH 定位方式
# 1、 使用绝对路径定位,一个斜杠 / 代表是绝对路径 --不建议使用
ele = driver.find_element(By.XPATH, '/html/body/div[7]/div[1]/form/table/tbody/tr[1]/td[2]/input')
print(ele)
# 优化一下--两个斜杠 // 代表是相对路径
driver.find_element(By.XPATH, '/html/body//input[@name="username"]').send_keys('这是一个测试xpath定位')
#页面等待3秒
sleep(3)
# 关闭浏览器
driver.quit()

可以任意输入一些内容来实现验证能不能定位到;

2)、 相对路径定位

37、使用两个 斜杠 // 代表使用的相对路径, 从任意位置开始查找,然后后面跟上 [@attribute='value'] (中括号里面加上一个@属性名和属性值)用于筛选具有指定属性值的元素;

driver.find_element(By.XPATH, '//input[@name="username"]')

38、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第八种 XPATH 定位方式
# 1、 使用绝对路径定位,一个斜杠 / 代表是绝对路径 --不建议使用
driver.find_element(By.XPATH, '/html/body/div[7]/div[1]/form/table/tbody/tr[1]/td[2]/input')
# 优化一下--两个斜杠 // 代表是相对路径
driver.find_element(By.XPATH, '/html/body//input[@name="username"]')# 2、 相对路径定位
driver.find_element(By.XPATH, '//input[@name="username"]').send_keys('这是一个测试xpath相对路径定位')#页面等待3秒
sleep(3)
# 关闭浏览器
driver.quit()
3)、 通过文本内容定位

39、精确匹配,使用 text() 关键词 函数定位包含指定文本的元素,使用 // 相对路径,然后 * 星号代表任何,通配符的意思,代表从任意位置开始查找,找到之后跟上 [] 中括号,然后里面调用 text() 函数,等于需要查找的内容;

driver.find_element(By.XPATH, '//*[text()="我已有账号,我要登录"]')

40、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第八种 XPATH 定位方式
# 1、 使用绝对路径定位,一个斜杠 / 代表是绝对路径 --不建议使用
driver.find_element(By.XPATH, '/html/body/div[7]/div[1]/form/table/tbody/tr[1]/td[2]/input')
# 优化一下--两个斜杠 // 代表是相对路径
driver.find_element(By.XPATH, '/html/body//input[@name="username"]')# 2、 相对路径定位
driver.find_element(By.XPATH, '//input[@name="username"]')# 3、通过文本内容定位--关键字函数:text()
driver.find_element(By.XPATH, '//*[text()="我已有账号,我要登录"]').click()#页面等待3秒
sleep(3)
# 关闭浏览器
driver.quit()
4)、 通过部分文本内容定位

41、在某些资料中也叫“模糊匹配”,使用 contains() 关键词 函数定位包含部分文本内容的元素,还是使用 // 相对路径,然后 * 星号代表从任意位置开始查找,找到之后跟上 [] 中括号,里面跟上关键字函数 contains() 函数,关键字里面是 () 小括号,里面再来一个 text(),然后再跟上内容,这个内容可以是部分、亦可以是全部,但是不能超过原有的文本;建议掌握,挺常用的;

driver.find_element(By.XPATH, '//*[contains(text(),"我要登录")]')

42、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第八种 XPATH 定位方式
# 1、 使用绝对路径定位,一个斜杠 / 代表是绝对路径 --不建议使用
driver.find_element(By.XPATH, '/html/body/div[7]/div[1]/form/table/tbody/tr[1]/td[2]/input')
# 优化一下--两个斜杠 // 代表是相对路径
driver.find_element(By.XPATH, '/html/body//input[@name="username"]')# 2、 相对路径定位
driver.find_element(By.XPATH, '//input[@name="username"]')# 3、通过文本内容定位--关键字函数:text()
driver.find_element(By.XPATH, '//*[text()="我已有账号,我要登录"]')# 4、通过部分文本内容定位--关键字函数:contains()
driver.find_element(By.XPATH, '//*[contains(text(),"我要登录")]').click()#页面等待3秒
sleep(3)
# 关闭浏览器
driver.quit()
5)、 通过元素属性定位

43、元素属性定位是比较常见的一种定位,使用 [@attribute='value'] 来定位具有指定属性的元素, 使用相对路径 // 双斜杠,任意位置查找,然后 * 星号 [] 中括号,中括号里面若是使用属性值的话,需加上 @ 艾特符号,然后跟上属性名属性值,其属性最好唯一,不然不知道找哪一个,注意属性值要对应不能错误;

driver.find_element(By.XPATH, '//*[@id="username"]')	# 就是右键复制 XPath 选项

44、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第八种 XPATH 定位方式
# 1、 使用绝对路径定位,一个斜杠 / 代表是绝对路径 --不建议使用
driver.find_element(By.XPATH, '/html/body/div[7]/div[1]/form/table/tbody/tr[1]/td[2]/input')
# 优化一下--两个斜杠 // 代表是相对路径
driver.find_element(By.XPATH, '/html/body//input[@name="username"]')# 2、 相对路径定位
driver.find_element(By.XPATH, '//input[@name="username"]')# 3、通过文本内容定位--关键字函数:text()
driver.find_element(By.XPATH, '//*[text()="我已有账号,我要登录"]')# 4、通过部分文本内容定位--关键字函数:contains()
driver.find_element(By.XPATH, '//*[contains(text(),"我已有账号")]')# 5、通过元素属性定位
driver.find_element(By.XPATH, '//*[@id="username"]').send_keys('这是一个元素属性测试定位')#页面等待3秒
sleep(3)
# 关闭浏览器
driver.quit()
6)、 使用逻辑运算符

45、通过使用 and、or 等逻辑运算符结合多个条件进行定位,逻辑运算符后面跟上属性的话记得务必加上一个 @ 艾特符号;逻辑运算符后、属性前面一定要有 @ 符号,一一对应;

driver.find_element(By.XPATH, '//*[@name="username" and @id="username"]')

46、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第八种 XPATH 定位方式
# 1、 使用绝对路径定位,一个斜杠 / 代表是绝对路径 --不建议使用
driver.find_element(By.XPATH, '/html/body/div[7]/div[1]/form/table/tbody/tr[1]/td[2]/input')
# 优化一下--两个斜杠 // 代表是相对路径
driver.find_element(By.XPATH, '/html/body//input[@name="username"]')# 2、 相对路径定位
driver.find_element(By.XPATH, '//input[@name="username"]')# 3、通过文本内容定位--关键字函数:text()
driver.find_element(By.XPATH, '//*[text()="我已有账号,我要登录"]')# 4、通过部分文本内容定位--关键字函数:contains()
driver.find_element(By.XPATH, '//*[contains(text(),"我已有账号")]')# 5、通过元素属性定位
driver.find_element(By.XPATH, '//*[@id="username"]')# 6、使用逻辑运算符
driver.find_element(By.XPATH, '//*[@name="username" and @id="username"]').send_keys('这是一个使用逻辑运算符测试定位')#页面等待3秒
sleep(3)
# 关闭浏览器
driver.quit()
7)、 使用函数

47、使用 xpath 函数,例如 contains()、text()等等对元素属性进行匹配;

两个斜杠 // 相对路径,

→ input 去找到根目录下面所有的 input 标签,

→ 中括号,→ 中括号里面用到包含函数 contains(),

→ 里面有包含 class 属性 @class,紧跟着里面包含的属性值;

driver.find_element(By.XPATH, '//input[contains(@class,"inputBg")]')

48、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第一个 ID 元素定位
driver.find_element(By.ID, 'username')# 第二个 NAME 属性定位
driver.find_element(By.NAME, 'username')# 第三个 CLASS_NAME 元素定位
driver.find_element(By.CLASS_NAME, 'inputBg')# 第四种 TAG_NAME 元素定位
driver.find_element(By.TAG_NAME, 'input')# 第五种 LINK_TEXT 完整超链接文本定位--单击操作 click()
driver.find_element(By.LINK_TEXT, '我已有账号,我要登录')# 第六种 PARTIAL_LINK_TEXT 部分超链接文本定位--单击操作 click() 点击效果
driver.find_element(By.PARTIAL_LINK_TEXT, '我要登录').click()# 第七种 CSS_SELECTOR 元素定位
# 1、 基本选择器
# 1)、 通过 id 选择器定位--用 # 井号开头,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '#username')        # 查找具有 id 属性的标签# 2)、 类 选择器定位--用 . 点表示,后面跟上属性值
driver.find_element(By.CSS_SELECTOR, '.inputBg')# 3)、 标签 选择器定位--直接去写标签名
driver.find_element(By.CSS_SELECTOR, 'input')     # 查找第一个 <input> 标签# 2、 属性选择器
# 4)、 单个属性定位--语法,先写一个 [] 中括号--再加上 属性 和 属性值
driver.find_element(By.CSS_SELECTOR, '[type="text"]')     # 单个属性定位# 5)、 多个属性定位--属性务必要带上中括号
driver.find_element(By.CSS_SELECTOR, '[type="text"][id="username"]')     # 多个属性定位
# 先写一个标签名,再写属性--标签名+属性选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input[class="inputBg"]')
# 通过标签名+ID选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input#username')
# 通过标签名+类选择器组合定位
driver.find_element(By.CSS_SELECTOR, 'input.inputBg')
# 通过标签层级定位--例如找table表格下面的tr标签--首先从第一级父元素table--然后跟上符号 > 大于号--然后下一级的标签tbody--再找下一级的tr
driver.find_element(By.CSS_SELECTOR, 'table>tbody>tr')# 第八种 XPATH 定位方式
# 1、 使用绝对路径定位,一个斜杠 / 代表是绝对路径 --不建议使用
driver.find_element(By.XPATH, '/html/body/div[7]/div[1]/form/table/tbody/tr[1]/td[2]/input')
# 优化一下--两个斜杠 // 代表是相对路径
driver.find_element(By.XPATH, '/html/body//input[@name="username"]')# 2、 相对路径定位
driver.find_element(By.XPATH, '//input[@name="username"]')# 3、通过文本内容定位--关键字函数:text()
driver.find_element(By.XPATH, '//*[text()="我已有账号,我要登录"]')# 4、通过部分文本内容定位(模糊匹配)--关键字函数:contains()
driver.find_element(By.XPATH, '//*[contains(text(),"我已有账号")]')# 5、通过元素属性定位
driver.find_element(By.XPATH, '//*[@id="username"]')# 6、使用逻辑运算符
driver.find_element(By.XPATH, '//*[@name="username" and @id="username"]')# 7、使用函数
driver.find_element(By.XPATH, '//input[contains(@class,"inputBg")]').send_keys('这是一个使用函数测试')#页面等待3秒
sleep(3)
# 关闭浏览器
driver.quit()

其他

其他定位方式烦请自行学习了解;比如:坐标定位等;

未完待续。。。

http://www.dtcms.com/a/430603.html

相关文章:

  • 从“端到端”到“人到人”:一种以需求直接满足为核心的新一代人机交互范式
  • C到C++(Num015)
  • 做关于车的网站有哪些网页布局的方式有哪些
  • 图漾相机C++语言---Sample_V1(4.X.X版本)完整参考例子(待完善)
  • Python数据挖掘之基础分类模型_支持向量机(SVM)
  • Java-Spring 入门指南(十六)SpringMVC--RestFul 风格
  • 益阳网站制作公司地址高端装饰公司网站设计
  • 产生式规则在自然语言处理深层语义分析中的演变、影响与未来启示
  • K230基础-摄像头的使用
  • 【文件读写】绕过验证下
  • 谷歌官方网站注册12306铁路网站开发语言
  • 深度学习基础知识-深度神经网络基础
  • pycharm找不到Tencent Cloud CodeBuddy如何安装[windows]?pycharm插件市场找不到插件如何安装?
  • 【开题答辩全过程】以 SpringbootVueUniapp农产品展销平台为例,包含答辩的问题和答案
  • C++中的小数及整数位填充
  • DuckDB 的postgresql插件无法访问GooseDB
  • 电子商务软件网站建设的核心网站布局模板
  • 从Nginx到Keepalived:反向代理高可用的技术闭环——Nginx、Keepalived、VIP与VRRP的深度联动解析
  • 现场运维指南
  • 查看和修改Linux的主机名称
  • Vmware虚拟机联网问题,显示:线缆已拔出!!!
  • 部署Nginx(Kylinv10sp3、Ubuntu2204、Rocky9.3)
  • 【含文档+PPT+源码】基于微信小程序的房屋租赁系统
  • GitHub 热榜项目 - 日榜(2025-10-01)
  • linux的文件和目录操作函数
  • 网站首页psdwordpress禁用修订
  • Coze源码分析-资源库-编辑工作流-后端源码-领域/数据访问/基础设施层
  • 13个GNS3 3.0.5 appliances设备模板镜像合集:IOSv/L2,IOU L2/L3,以及IOS-XE
  • Java-Spring入门指南(十九)thymeleaf基本概念
  • GameObject 常见类型详解 -- 宝箱(CHEST)