Selenium3 Python WebDriver API源码探析(4):Web元素的属性和方法

selenium3源码解析Python篇(十六)-webdriver源码解析 此章为核心模块,内含对浏览器的各种操作!!! 目录结构如下: class WebDriver(object): 将命令通过WebDriver wire protocol协议发送到服务器 session_id: 由此webdriver启动和控制浏览器的会话id capabilities: 远端服务器以字典形式返回有效功能,并非所有服务器实现都将支持每种WebDriver功能。 因此,在描述用户请... 阅读详情

Selenium中网页中DOM元素的实现为selenium\webdriver\remote\webelement.py中的WebElement类。
WebDriver API中定位元素的方法在《Selenium3 Python WebDriver API源码探析(3):定位元素》已经简单介绍。本文主要介绍网页元素的属性和方法。

属性或特性

元素的标签名称

作用:获得当前元素的标签名称
签名:el.tag_name
值类型:字符串,例如'input'

元素的文本

作用:获得当前元素的文本内容
签名:el.text
值类型:字符串,例如'百度热榜'

获取元素大小

作用:获取元素的大小(以像素为单位)。
签名: el.size
值类型:字典,例如:{'height': 14.0, 'width': 0.0}

获取元素位置

作用:获取元素的位置(以像素为单位)。
签名: el.location
值类型:字典,例如:{'x': 371, 'y': 286}

获取元素矩形区域

作用:获取元素的矩形区域(元素位置和大小)。
签名: el.rect
值类型:字典,例如:{'x': 371.0, 'y': 286, 'width': 0.0, 'height': 14.0}

元素的内部id

作用:获得当前元素在selenium中的内部id(主要用于判断两个元素是否相同)
签名:el.id
值类型:字符串

元素的引用的WebDriver实例

作用:获得当前元素引用的WebDriver实例
签名:el.parent
值类型:WebDriver实例

@property
def location_once_scrolled_into_view(self):
    """THIS PROPERTY MAY CHANGE WITHOUT WARNING. Use this to discover
    where on the screen an element is so that we can click it. This method
    should cause the element to be scrolled into view.

    Returns the top lefthand corner location on the screen, or ``None`` if
    the element is not visible.

    """
    if self._w3c:
        old_loc = self._execute(Command.W3C_EXECUTE_SCRIPT, {
            'script': "arguments[0].scrollIntoView(true); return arguments[0].getBoundingClientRect()",
            'args': [self]})['value']
        return {"x": round(old_loc['x']),
                "y": round(old_loc['y'])}
    else:
        return self._execute(Command.GET_ELEMENT_LOCATION_ONCE_SCROLLED_INTO_VIEW)['value']

元素属性或CSS属性的获取方法

获取元素属性

作用:获得当前元素的属性特性(property)或(attribute),优先查找特性,如果没有,再查找同名属性,如果都找不到返回None。
签名:el.get_attribute(name)
返回值:布尔值、字符串、None
源码:

def get_attribute(self, name):
    """Gets the given attribute or property of the element.

    This method will first try to return the value of a property with the
    given name. If a property with that name doesn't exist, it returns the
    value of the attribute with the same name. If there's no attribute with
    that name, ``None`` is returned.

    Values which are considered truthy, that is equals "true" or "false",
    are returned as booleans.  All other non-``None`` values are returned
    as strings.  For attributes or properties which do not exist, ``None``
    is returned.

    :Args:
        - name - Name of the attribute/property to retrieve.

    Example::

        # Check if the "active" CSS class is applied to an element.
        is_active = "active" in target_element.get_attribute("class")

    """

    attributeValue = ''
    if self._w3c:
        attributeValue = self.parent.execute_script(
            "return (%s).apply(null, arguments);" % getAttribute_js,
            self, name)
    else:
        resp = self._execute(Command.GET_ELEMENT_ATTRIBUTE, {'name': name})
        attributeValue = resp.get('value')
        if attributeValue is not None:
            if name != 'value' and attributeValue.lower() in ('true', 'false'):
                attributeValue = attributeValue.lower()
    return attributeValue

获取元素CSS属性

作用:获得当前元素的CSS属性值。
签名:el.value_of_css_property(property_name)
返回值:字符串

状态检测类方法

元素是否处于选择状态

作用:检测元素是否处于选择状态。
签名:el.is_selected()
返回值:布尔值

元素是否可用

作用:检测元素是否可用。
签名:el.is_enabled()
返回值:布尔值

元素是否可见

作用:检测元素是否对可见。
签名:el.is_displayed()
返回值:布尔值

动作类方法

点击元素

作用:点击元素。
签名:el.click()

向表单元素内输入内容

作用:向表单元素内输入内容。
签名:el.send_keys(value)

清空表单元素内容

作用:清空表单元素内容。
签名:el.clear()

提交表单

作用:提交表单。
签名:el.submit()

案例1:演示元素的属性和方法

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
hot = driver.find_element_by_class_name('hot-title')
print(repr(hot.tag_name), type(hot.tag_name))
print(repr(hot.text), type(hot.text))
print(repr(hot.size), type(hot.size))
print(repr(hot.location), type(hot.location))
print(repr(hot.rect), type(hot.rect))
print(repr(hot.id), type(hot.id))
print(repr(hot.parent), type(hot.parent))
print(repr(hot.get_attribute('text')), type(hot.get_attribute('text')))
print(repr(hot.value_of_css_property('color')), type(hot.value_of_css_property('color')))
print(repr(hot.is_selected()), type(hot.is_selected()))
print(repr(hot.is_enabled()), type(hot.is_enabled()))
print(repr(hot.is_displayed()), type(hot.is_displayed()))
driver.quit()

输出:

'a' <class 'str'>
'百度热榜' <class 'str'>
{'height': 14.0, 'width': 0.0} <class 'dict'>
{'x': 371, 'y': 286} <class 'dict'>
{'x': 371.0, 'y': 286.066650390625, 'width': 0.0, 'height': 14.0} <class 'dict'>
'b599675f-2d0b-4a7e-aa5f-f7e91320ceff' <class 'str'>
<selenium.webdriver.firefox.webdriver.WebDriver (session="37e5167a-b85c-4c94-b139-c040b4a00abd")> <class 'selenium.webdriver.firefox.webdriver.WebDriver'>
'百度热榜' <class 'str'>
'rgb(0, 0, 238)' <class 'str'>
False <class 'bool'>
True <class 'bool'>
True <class 'bool'>

案例2:演示元素的动作方法

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 获取搜索文本框元素
input = driver.find_element_by_id('kw')
# 获取搜索按钮
submit = driver.find_element_by_id('su')
# 向文本框输入test
input.send_keys('test')
time.sleep(5)
# 清除文本框内容
input.clear()
time.sleep(5)
# 向文本框输入test1
input.send_keys('test1')
# 提交表单
input.submit()

Selenium WebDriver自动化测试实战:从Edge环境搭建到核心操作详解 浏览器自动化是现代软件开发和运维中的关键技术,它通过模拟真实用户操作来实现对网页的自动控制。其核心原理是基于W3C标准协议,通过驱动程序(如edgedriver)将代码指令翻译成浏览器能理解的内部命令,从而驱动真实浏览器执行点击、输入、跳转等交互。这项技术的价值在于实现了测试的标准化与真实性,能精准验证前端功能、处理动态加载数据,并广泛应用于自动化测试、数据抓取和RPA流程自动化等场景。以Selenium WebDriver为例,它提供了跨语言支持,并通过Selenium Manager等工具简化了环境配置 阅读详情

相关推荐

Edge浏览器IE模式失效?最新142版本隐藏按钮的3种解决方案

本文针对Edge浏览器142版本中IE模式按钮消失的问题,提供了3种实用解决方案,包括注册表修改、手动添加网站到IE模式列表和企业策略部署方案,帮助用户解决兼容性问题,确保老旧系统正常访问。

weixin_28308325的博客 504

python webdriver API

基于python selenium 的web UI自动化

weixin_43588508的博客 338

深入解析6T SRAM的读写机制与性能优化

本文深入解析了6T SRAM的基本结构与核心工作原理,详细阐述了其读写操作的具体时序与机制。文章重点探讨了在先进工艺下面临的读写稳定性、写入能力等性能挑战,并系统介绍了写入辅助与读取辅助等关键优化技术,旨在提升SRAM的可靠性与整体性能。

weixin_29205061的博客 1225

HTML元素(标签)大全及使用介绍

a:表示超链接的起始或目的位置。 acronym:表示取首字母的缩写词。 address:表示特定信息,如地址、签名、作者、文档信息。 applet:在页面上放置可执行内容。 area:定义一个客户端图像映射中一个超级链接区域的形状、坐标和关联 URL。 b:指定文本应以粗体显示。 base:指定一个显式 URL 用于解析对于外部源的链接和引用,如图像和样式表。

limuzi13的专栏 1163

Android逆向实战:用Xposed Hook微信消息发送(附完整代码)

本文提供了一份Android逆向实战指南,详细讲解如何使用Xposed框架Hook微信消息发送功能。内容涵盖环境搭建、逆向分析定位关键方法、编写Hook模块代码以及调试部署的全过程,并附有完整代码示例,帮助开发者深入理解Android应用底层交互与Hook技术。

weixin_29196315的博客 1118

C-Lodop打印服务系统存在任意文件读取

C-Lodop打印服务系统存在任意文件读取

weixin_43567873的博客 2875

Selenium-Webdriver API命令和操作-Get & Wait

抓取页面 WebDriver可能要做的第一件事就是导航到一个页面。正常的做法是调用“get”: drviver.get("http://www.google.com") 取决于几个因素,包括操作系统/浏览器组合,WebDriver可能会或可能不会等待页面加载。在某些情况下,WebDriver可能会在页面完成之前或者甚至开始加载之前返回控件。为确保健壮性,需要使用显式和隐式等待来等待页...

weixin_30279315的博客 195

MDIO接口协议与其详解——单片机

在单片机领域,通过MDIO接口可以与外部设备进行通信,实现对设备的控制和数据的读写。通过本文的介绍,你可以了解到MDIO接口协议的原理和使用方法,并参考源代码示例进行实际的开发和应用。具体的初始化方法与单片机的型号和开发环境有关,可以参考相应的单片机手册和开发工具的文档。(1)发送读取命令:向MDIO线发送读取命令,通常是发送一个特定的控制字节,用于指示要读取的寄存器地址。(1)发送写入命令:向MDIO线发送写入命令,通常是发送一个特定的控制字节,用于指示要写入的寄存器地址。二、MDIO接口协议使用方法。

web_class282的博客 2625

educoder—web:页面元素和属性

文章目录1.结构元素1.1文档结构元素相关概念答案:1.2 header元素和article元素的应用答案:1.3 figure元素和 figcaption 元素的应用答案:2.页面节点元素2.1页面节点元素相关概念答案:2.2 section元素的使用——文章节答案:2.3 nav元素的使用答案2.4 footer元素和address元素的使用版权信息联系人信息答案:3.交互元素3.1交互元素相关概念3.1.1 progress元素3.1.2 meter元素3.1.3 details/summary元素3

m0_51461030的博客 1134

高德地图API如何使用

通过以上步骤,您可以成功接入并使用高德地图API来为您的应用添加丰富的地图功能。

QQ_778132974的博客 4788

【踩坑记录】colmap中的相机位姿的坐标系定义及其可视化结果的隐含转换

1 坐标系定义及转换   首先介绍一下世界坐标系和相机坐标系之间的转换,它们之间是存在一个转换关系的。现假设空间中一点X,它在相机坐标系下的坐标是Xcamera,在世界坐标系下的坐标是Xworld。假设它通过R和t实现从相机坐标系到世界坐标系之间的转换: Xworld = RXcamera + t   那么,由上式,我们可以推得从世界坐标系向相机坐标系的转换关系(RT=R-1,所以通常直接使用RT即可): Xcamera = RTXworld - RTt   所以,两个坐标系之间的转换,需要看其具体

zeeq的博客 2万+

web前端学习(六)—— HTML中元素的id属性、div和span布局

一、id属性 1、在HTML文档中,任何元素(节点)都有id属性,id属性是该节点的唯一标识,所以在同一个HTML文档中id值不能重复 2、注意:表单提交数据的时候,只和name有关系,和id无关 3、id有什么用? javascript语言可以对HTML文档中的任意节点进行增删改,那么在增删改之前需要先拿到这个节点,通常我们通过id来拿节点对象 id的存在让我们获取元素(节点)更方便 4、HTML文档是一颗树,树上有很多节点,每一个节点都有唯一的id ja...

m0_55637498的博客 2868

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Selenium3 Python WebDriver API源码探析(20)WebDriver协议概述

WebDriver协议 早期Selenium和WebDriver是两个独立的项目,Selenium早期主要依靠将操作转换为JavaScript然后注入浏览器实现浏览器的自动化,WebDriver将浏览器原生API封装成一套更加面向对象的API,但是由于不同浏览器内核的差异,因此为了适配,必须对不同浏览器实现不同的API。在Selenium2之后两个项目合并,我们常说的Selenium其实主要指的就是WebDriver API。当前Selenium稳定版本的主版本为3,beta版本的Selenium4已经在路

mighty13的专栏 3万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Selenium3 Python WebDriver API源码探析(3):定位Web元素

定位元素是任何与Web进行交互操作的基础,JavaScript如是,对于Selenium亦如是。只有定位到了元素,才能对元素进行操作。 Selenium中的两个基础元素定位方法(find_element与 find_elements) 在Selenium中使用find_element与 find_elements方法即可完成元素的定位。 我们先简单对比下这两个方法,再讲相关的细节: find_element : 函数签名:def find_element(self, by=By.ID, value=No

mighty13的专栏 3万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Selenium3 Python WebDriver API源码探析(1):Selenium基本概念、环境部署

Selenium 简介 Selenium 是支持 Web 浏览器自动化的一系列工具和库的集合。Selenium 是开源项目。目前最新版本为Selenium 3。 Selenium 支持多平台,如:Linux、Windows和mac OS。 Selenium 支持多种编程语言,如:Java、Python、C#、Ruby、JavaScript、Kotlin Selenium 支持多种浏览器,如:IE、Firefox、Google Chrome、Edge、Safari、Opera等 Selenium项目主要包括以

mighty13的专栏 3万+

Selenium3 Python WebDriver API源码探析(11)WebDriver Capabilities(驱动功能)概述,FirefoxOptions

Selenium通过WebDriver操控浏览器,WebDriver不单是远程控制接口,也是W3C的推荐标准详见https://www.w3.org/TR/webdriver/。 Capabilities(功能)是WebDriver支持的标准命令之外的扩展命令,用于控制端与浏览器端之间对一些特性进行通讯,控制端可以使用Capabilities定义浏览器端创建新会话时需要满足的一些特性。浏览器端也可以用Capabilities描述会话所支持的特性集。 WebDriver支持的Capabilities分为两类,

mighty13的专栏 3万+

Selenium API-WebDriver 属性

打开浏览器,能够定位的内容都在 HTML 代码段内的 <body>页面内容</body> 中,对于浏览器上的当前页面标题,url等,都是无法通过元素定位来操作的。 故此,有特定的 WebDriver 属性来完成这一类的操作。 序号 方法/属性 描述 1 driver.title 获取当前页面的标题 2 driver.current_url 获取当前页面的链接地址 3 driver.name 获取浏览器名称 4 driver.page_source 获取当前

Leo-Fighting的博客 408

Selenium WebDriver

Selenium WebDriver 简明指南(2025版) Selenium WebDriver 是自动化测试的核心工具,本文介绍了其核心功能和使用方法。主要内容包括: WebDriver架构:遵循W3C标准,通过浏览器驱动控制真实浏览器 多浏览器支持:Chrome、Firefox、Edge等主流浏览器的驱动配置 Python快速入门:安装依赖、基础代码模板和核心API使用 元素定位:8种定位方式,推荐CSS/XPath 等待机制:隐式等待和显式等待的区别与使用场景 Selenium 4新特性:相对定位、

m0_57545130的博客 1275

python爬虫工程师 成长之路八 Selenium WebDriver

文章目录Selenium WebDriver 简介Selenium WebDriver 原理Selenium WebDriver 安装Selenium WebDriver 使用浏览器常用操作单对象定位一组对象定位 Selenium WebDriver 简介 Selenium WebDriver是一个本地和远程的实时浏览器自动化工具,是最接近的模拟用户行为。 WebDriver的目标是提...

Late_whale的博客 作者:代码搬运工老李的二师兄 5361

Selenium3 Python WebDriver API源码探析(14)页面加载策略pageLoadStrategy(FireFox)

Web页面属性document.readyState描述当前页面的加载状态,该属性有三个值:loading(正在加载)、interactive(可交互)、complete(完成)。 默认情况下,在document.readyState为COMPLETE之前,WebDriver都将延迟driver.get()的响应或 driver.navigate().to()的调用。 在单页应用程序中(例如Angular、React、Ember),一旦动态内容加载完毕(即pageLoadStrategy状态为COMPLET

mighty13的专栏 3万+

Selenium 4.0 Python自动化测试:新API、定位策略与实战指南

Web自动化测试是软件质量保障和效率提升的关键技术,其核心原理是通过程序模拟用户操作浏览器,实现页面交互的自动化。在Python技术栈中,Selenium作为最主流的浏览器自动化工具,其价值在于能够跨浏览器、跨平台执行功能测试、数据抓取和UI验证。随着Selenium 4.0的发布,其全面拥抱W3C WebDriver协议,并引入了更现代、规范的API设计,如统一的`find_element(By.*)`定位方法和革命性的相对定位器,显著提升了脚本的健壮性和可维护性。这些特性在电商流程验证、数据采集、表单自

weixin_34060299的博客 514

使用Selenium Python API进行元素交互

本文详细介绍了如何使用Selenium Python API与网页元素进行交互,包括处理文本框、复选框、下拉菜单、警告框和浏览器导航等操作。同时探讨了同步问题的解决方法,如隐式等待和显式等待,并通过创建用户账户的实际应用示例展示了其在复杂场景中的使用。

gaoxiang_120的专栏 79

Python Selenium Web自动化终极指南:从环境搭建到高级实战

Web自动化是现代软件开发和数据工程中的关键技术,它通过程序模拟用户与浏览器的交互,实现网页操作的自动化执行。其核心原理基于WebDriver协议,该协议定义了浏览器与自动化脚本之间的标准化通信接口,允许外部程序控制浏览器行为。这项技术的核心价值在于将人工从重复、耗时的网页操作中解放出来,大幅提升测试效率、数据采集的稳定性和业务流程的自动化水平。在应用场景上,它广泛覆盖软件测试(特别是端到端测试)、网络数据抓取(爬虫)、日常办公自动化(如报表生成、表单填写)以及网页监控等多个领域。本文聚焦于使用Python

weixin_34341117的博客 514

Selenium WebDriver运行底层逻辑

WebDriver是Selenium的一个子项目,是Selenium的一个核心组件,它是一种用于自动化Web应用程序的应用程序编程接口(API),它允许程序员在不同的浏览器上编写自动化测试脚本。基于这个驱动会启动一个浏览器对象,同时会生成一个session来管理浏览器,此时webdriver成为一个代理,其作用是代码通过webdriver下发给浏览器,浏览器将响应传给webdriver,webdriver再转给代码。WebDriver服务器接收到请求后,会将请求发送给浏览器驱动程序。

qq_29180433的博客 1109

selenium-stealth源码解析:JavaScript注入如何实现浏览器指纹伪装

selenium-stealth是一个旨在增强Python Selenium隐身性的开源项目,通过JavaScript注入技术实现浏览器指纹伪装,帮助开发者绕过反爬虫机制。本文将深入解析其核心实现原理,展示如何通过JS注入技术伪装浏览器指纹特征。 ## 浏览器指纹伪装的核心原理 浏览器指纹是网站识别自动化程序的重要依据,包括`navigator.webdriver`、`navigator.ve

gitblog_00060的博客 1142
上一篇: Selenium3 Python WebDriver API源码探析(3):定位Web元素
下一篇: Selenium3 Python WebDriver API源码探析(5):浏览器导航、页面基本信息(URL、标题、HTML)、窗口大小位置管理
mighty13
博客等级 码龄23年 728粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值