selenium 定位方式5

Selenium 8大定位方法中的最后一个 find_element_by_tag_name,这是所有定位方式中最不理想的定位方式,主要是因为一个页面中,存在相当多的相同的标签,基本做不到唯一定位,通常只能默认选择第一个定位到的元素。

# find_element_by_tag_name 的应用:根据 tag_name 定位元素
from selenium import webdriver  # 导入 webdriver 模块
from time import sleep  # 导入 sleep 模块,可以使程序强制休眠

driver = webdriver.Chrome()  # 调用 Chrome 浏览器
driver.maximize_window()  # 窗口最大化
driver.get('https://www.baidu.com/')  # 打开 百度

element = driver.find_element_by_tag_name("textarea")  # 定位 textarea 标签元素
print(element.get_attribute("id"))  # 打印 该元素 的 id 属性值
elements = driver.find_elements_by_tag_name("textarea")  # 查找页面上所有的 textarea 标签元素
print(elements)  # 打印

driver.quit()  # 关闭浏览器

除了 8 种元素定位方式以外,还可以通过其他的形式定位元素。

通过父级定位元素来定位目标元素

在目标元素不方便定位时,可以先定位到它的父级元素,再通过已经定位的父级元素,对目标元素进行定位。

实际应用

# 通过已经定位到的父级元素定位目标元素
from selenium import webdriver  # 导入 webdriver 模块
from time import sleep  # 导入 sleep 模块,可以使程序强制休眠

driver = webdriver.Chrome()  # 调用 Chrome 浏览器
driver.maximize_window()  # 窗口最大化
driver.get('https://www.baidu.com/')  # 打开 百度
sleep(2)  # 强制休眠 2 秒
father_element = driver.find_element_by_id("form")  # 定位找到父级元素
target_element = father_element.find_element_by_id("kw")  # 通过父级元素定位目标元素
target_element.send_keys("自动化测试")  # 输入
sleep(2)  # 强制休眠 2 秒

driver.quit()  # 关闭浏览器

通过元素组下标定位

Selenium 的 8 大定位方式,都有复数形式, 例如:

find_elements_by_id

find_elements_by_class_name

find_elements_by_xpath

……

以上的都能返回一个元素组(列表),通过元素组的下标,定位目标元素。

# 通过元素组下标定位
from selenium import webdriver  # 导入 webdriver 模块
from time import sleep  # 导入 sleep 模块,可以使程序强制休眠

driver = webdriver.Chrome()  # 调用 Chrome 浏览器
driver.maximize_window()  # 窗口最大化
driver.get('https://www.baidu.com/')  # 打开 百度
sleep(2)  # 强制休眠 2 秒
elements = driver.find_elements_by_xpath("//div[@id='s-top-left']/a")  # 定位元素组
print(type(elements))  # 打印 elements 类型,<class 'list'>
# 打印元素组中每个元素中的文本
for element in elements:
    print(element.text)
element1 = elements[0]  # 通过 下标0 定位到第一个元素
element1.click()  # 点击

sleep(2)  # 强制休眠 2 秒

driver.quit()  # 关闭浏览器

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肖遥Janic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值