PYTHON开发:selenium模块Web定位元素函数

2023年 7月 12日 42.2k 0

常见定位元素的接口函数以及推荐指数

1.selenium.webdriver.Chrome().find_element_by_id()----------根据元素的id这个属性的取值来定位元素。

PYTHON开发:selenium模块Web定位元素函数

find_element_by_id("kw")就可以定位到input这个元素。

推荐指数:★★★

理由:一个页面上出现两个id取值一样的的元素就尴尬了。

2.selenium.webdriver.Chrome().find_element_by_name()----------根据元素的name这个属性的取值来定位元素。

PYTHON开发:selenium模块Web定位元素函数

find_element_by_name("wd")就可以定位到input这个元素了。

推荐指数:★★

理由:大部分元素并没有被开发赋予name这个属性,如果一个页面上出现name取值一样的元素就尴尬了。

3.selenium.webdriver.Chrome().find_element_by_tag_name()-----------根据元素的本身名称来定位元素。

PYTHON开发:selenium模块Web定位元素函数

find_element_by_tag_name("input")就可以定位到input这个元素了。

推荐指数:★

理由:一个页面出现名称一样的元素是肯定的事情,用元素名称定位真的是太傻了。

4.selenium.webdriver.Chrome().find_element_by_class_name()----------根据元素的class这个属性的取值来定位元素。

PYTHON开发:selenium模块Web定位元素函数

find_element_by_class_name("s_ipt")就可以定位到input这个元素了。

推荐指数:★★★

理由:一个页面出现了两个class取值一样的元素就尴尬了。

5.selenium.webdriver.Chrome().find_element_by_xpath()-----------根据元素的任意一个属性的取值来定位该元素或者该元素的兄弟元素、父元素、子元素等。

PYTHON开发:selenium模块Web定位元素函数

find_element_by_xpath("//span[@id='s_btn_wr']")既可以定位到id为"s_btn_wr"的span这个元素。

find_element_by_xpath("//span[@id='s_btn_wr']/input")就可以定位到value为"百度一下"的input元素。

find_element_by_xpath("//input[@id='su']/..")就可以定位到id为"su"的input元素的父元素,也就是id为"s_btn_wr"的span这个元素。

PYTHON开发:selenium模块Web定位元素函数

find_element_by_xpath("//span[text()='创建']")就可以定位到名称为“创建”的这个span元素。

find_element_by_xpath("//span[text()='创建']/../span[1]")就可以定位到style为"background-image:url"这个span元素。(子元素名称相同以1,2,3.....下标标注)

推荐指数:★★★★★

理由:专治各种疑难元素的定位。

6.selenium.webdriver.Chrome().find_element_by_link_text()------------根据元素的在界面展现的字串来定位该元素,且该元素是可以点击触发新链接的。

PYTHON开发:selenium模块Web定位元素函数

find_element_by_link_text("syslog_lijun")就可以定位到链接元素a。

推荐指数:★★★

理由:find_element_by_xpath()可以代替这个函数获取需要的元素

特别注意:Selenium 升级到版本 4 以后, 下面这种 find_element_by 方法都作为过期不赞成的写法

wd.find_element_by_id('username').send_keys('byhy')
wd.find_element_by_class_name('password').send_keys('sdfsdf')
wd.find_element_by_tag_name('input').send_keys('sdfsdf')
wd.find_element_by_css_selector('button[type=submit]').click()

运行会有告警,所以现在都要写成下面这种格式

from selenium.webdriver.common.by import By

# 初始化代码 ....

wd.find_element(By.ID, 'username').send_keys('byhy')
wd.find_element(By.CLASS_NAME, 'password').send_keys('sdfsdf')
wd.find_element(By.TAG_NAME, 'input').send_keys('sdfsdf')
wd.find_element(By.CSS_SELECTOR,'button[type=submit]').click()
wd.find_element(By.XPATH,''//span[@id='s_btn_wr']]'').click()

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论