selenium工具之元素定位方法find_element(by=By.xx, value='xxx') && find_elements(by=By.xx, value='xxx')详解
前言
selenium是一款十分强大的Web应用自动化框架,我们可以通过它来自动操控浏览器。操控浏览器的实质是操控浏览器的界面元素,因此定位元素是使用selenium的关键,selenium中通过 find_element() 方法来完成定位。
用法
1、通过webdriver对象的 find_element(by="属性名", value="属性值") 方法
源码如下:
实例如下:
from selenium import webdriver from selenium.webdriver.common.by import By caps = { 'browserName': 'chrome', 'loggingPrefs': { 'browser': 'ALL', 'driver': 'ALL', 'performance': 'ALL', }, 'goog:chromeOptions': { 'perfLoggingPrefs': { 'enableNetwork': True, }, 'w3c': False, }, } driver = webdriver.Chrome(desired_capabilities=caps, executable_path='/home/test/MyCode/Common/driver/chromedriver_102') driver.get('https://www.baidu.com') driver.find_element(by=By.ID, value='kw') driver.find_element(by='id', value='kw')
注意:
By 是一个集成属性名变量的类(通过类名.变量名来调用),如下:
2、通过webdriver对象的 find_element_by_xx(xx=xx) 方法(在selenium的4.0版本中此种用法已经抛弃,不推荐使用)
注意:但是可能因为项目需求或者浏览器版本需求可能在工作中使用到的还是较低版本的selenium,如下图:
selenium工具中有以下定位方式:
driver.find_element_by_id('id') driver.find_element_by_xpath('xpath') driver.find_element_by_link_text('link_text') driver.find_element_by_partial_link_text('partial_link_text') driver.find_element_by_name('name') driver.find_element_by_tag_name('tag_name') driver.find_element_by_class_name('class_name') driver.find_element_by_css_selector('css_selector')
通过以上元素定位的源码,可以看出上面的方法实际上调用的依旧是 driver.find_element(by, value)
3、 find_element(by=By.xx, value='xxx') && find_elements(by=By.xx, value='xxx') 的区别
① find_element() 的返回结果是一个WebElement对象,如果符合条件的有多个,默认返回找到的第一个,如果没有找到则抛出NoSuchElementException异常。
② find_elements() 的返回结果是一个包含所有符合条件的WebElement对象的列表,如果未找到,则返回一个空列表。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!