You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Python:WebElement是否继承WebDriver类?为何可调用其方法?

Selenium WebElement 为何能调用WebDriver的查找方法?

示例代码

score_both_halves = driver.find_element_by_xpath('//label[@data-btn-radio="\'ScoreBothHalves\'"]')
score_both_halves.find_element_by_xpath() 

问题描述

在第二行代码中,我使用WebDriver类的find_element_by_xpath()方法调用WebElement对象,且运行正常。
这是如何实现的?Selenium Python中的WebElement类是否继承自WebDriver类?
Selenium Python中的WebElement类是否并未继承WebDriver类?如果是,为何WebElement对象可使用WebDriver类的方法?

解答

WebElement类并没有继承WebDriver类。

你能在WebElement对象上调用find_element_by_xpath()这类方法,是因为Selenium在WebElement类里单独实现了一套和WebDriver同名的元素查找方法。这些方法和WebDriver的对应方法签名一致,但逻辑上是在当前WebElement的上下文范围内查找子元素,而WebDriver的同名方法是在整个页面范围内查找元素。

举个实际的区别:当你在WebElement上调用find_element_by_xpath(".//div")时,这个xpath是相对当前元素的局部查询;而在driver上调用find_element_by_xpath("//div"),则是查找整个页面中的div元素。

底层实现上,WebElement的这些查找方法会把定位逻辑转换为相对当前元素的查询,通过浏览器驱动协议(比如Chrome DevTools Protocol)向浏览器发送指令,限定查找范围为当前元素的子节点,以此实现局部查找的功能。

内容的提问来源于stack exchange,提问作者Ali Haider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:02:12