查找元素

官方文档:https://www.selenium.dev/documentation/webdriver/elements/locators/

一般通过find_element或者find_elements方法获取元素后的类型是WebElement或该类型的列表。

语法:

# 查找第一个符合条件的WebElement元素并返回。
driver.find_element(By类型, "查找的语法") # 查找符合条件的所有元素,返回的是一个WebElement元素的列表。
driver.find_elements(By类型, "查找的语法")

By类型:

from selenium.webdriver.common.by import By

# 根据id属性查找
ID = "id"
# 使用XPATH语法查找
XPATH = "xpath"
# 根据链接的文本查找
LINK_TEXT = "link text"
# 根据链接的部分文本查找
PARTIAL_LINK_TEXT = "partial link text"
# 根据name属性查找
NAME = "name"
# 根据标签名查找
TAG_NAME = "tag name"
# 根据class属性查找
CLASS_NAME = "class name"
# 使用css选择器语法查找
CSS_SELECTOR = "css selector"

注意:

找到后的元素可以再次使用xpath等方法,因为本身就是一个WebElement对象,原来有什么方法和属性,都可以继续使用!

元素的属性、方法

WebElement的一些属性和方法

# 获取元素的标签名
element.tag_name # 获取元素的text文本
element.text # 获取元素的位置信息
element.location # 获取元素的大小和位置信息
element.rect # 获取指定的属性或特性,比如可以获取链接的href、或者元素的innerHTML这些隐藏的DOM属性
element.get_attribute(attribute) # 点击元素
element.click() # 输入内容或者发送文件(表单的文件上传)
element.send_keys(value) # 清除文本元素的输入内容(前提是这个元素是一个文本元素input)
element.clear() # 提交表单
element.submit() # 元素自身截图,然后保存到指定路径中
element.screenshot(fielname) # 元素自身截图,然后返回bytes类型(注意,最好传入io.BytesIO(element.screenshot_as_png)来写入文件)
element.screenshot_as_png # 元素自身截图,但是返回的是base64字符串(html可以base64存图片的,N年前学html也学过)
element.screenshot_as_base64

针对元素截图是非常有用的,遇到一些难爬的,比如字体加密、css加密字体,还要计算什么的,如果嫌麻烦,就直接找到元素后,针对元素自身的大小直接截图,然后丢给OCR识别文字即可!香喷喷!

例子:

element = driver.find_element(By.PARTIAL_LINK_TEXT, "天猫超市")
print(f"{element.text=}")
print(f"{element.tag_name=}")
print(f"{element.location=}")
print(f"{element.rect=}")
print(f"{element.get_attribute('href')=}")
print(f"{element.get_attribute('innerHTML')=}") element.text='天猫超市'
element.tag_name='a'
element.location={'x': 1175, 'y': 194}
element.rect={'height': 16, 'width': 105, 'x': 1175.479248046875, 'y': 193.6666717529297}
element.get_attribute('href')='https://chaoshi.tmall.com/'
element.get_attribute('innerHTML')='\n 天猫超市\n '

Selenium查找元素、元素的属性和方法的更多相关文章

  1. DOM元素对象的属性和方法(2)

    11.contentEditable 作用:设置或返回元素内容可否编辑布尔值,HTML5新增属性 <!DOCTYPE html> <html> <head> < ...

  2. DOM元素对象的属性和方法(1)

    一.accessKey() 作用:获取元素焦点快捷键:设置快捷键后,使用Alt+快捷键,让元素快速获得焦点, <!DOCTYPE html> <html> <head&g ...

  3. selenium自动化之元素定位方法

    在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...

  4. 使用Selenium对网页元素进行定位的诸种方法

    使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接. 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了 ...

  5. python+appium 查找某个元素find_element()并click()点击,正向判断与反判断的方法封装

    使用场景: 在自动化测试过程中,难免会用到反判断,包括异常情况的处理,比如:find_element_by_name('测试') 判断"测试"是否存在,存在则点击,不存在则执行其他 ...

  6. 【亲测显式等待】Selenium:元素等待的4种方法

    Selenium:元素等待的4种方法 1.使用Thread.sleep(),这是最笨的方法,但有时候也能用到而且很实用.   2.隐式等待,隐性等待是指当要查找元素,而这个元素没有马上出现时,告诉We ...

  7. selenium java-3 定位元素的八种方法

    web driver提供了八种元素定位的方法: id name class name tag name link text partial link text xpath css selector 如 ...

  8. selenium 获取某元素的 某属性 的值

    selenium  获取某元素的 某属性的值 1 先通过元素定位,获得此元素的 WebElement; WebElement   yuansu = driver.findElement(By.clas ...

  9. Selenium 八种元素定位方法

    前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...

  10. Selenium八种元素定位方法源码阅读

    接触过Selenium的都知道元素定位有八种方法,但用不同的方法在执行时有什么区别呢? 元素定位8种方法(Python版),当然还有每一个方法对应的find_elements方法 find_eleme ...

随机推荐

  1. KRPano最新官方文档中文版

    KRPano最新官方文档中文版: KRPano作为VR全景开发中常用的工具软件,深受广大开发者喜爱,但由于软件本身是国外软件,因此官方的文档都是以英文为主,对于一些国内不太熟悉英文的开发者来说比较不友 ...

  2. Java开发面试--Redis专区

    1. 什么是Redis?它的主要特点是什么? 答: Redis是一个开源的.基于内存的高性能键值对存储系统.它主要用于缓存.数据存储和消息队列等场景. 高性能:Redis将数据存储在内存中,并采用单线 ...

  3. 理解并掌握C#的Channel:从使用案例到源码解读(一)

    引言 在C#的并发编程中,Channel是一种非常强大的数据结构,用于在生产者和消费者之间进行通信.本文将首先通过一个实际的使用案例,介绍如何在C#中使用Channel,然后深入到Channel的源码 ...

  4. 有人说SaToken吃相难看,你怎么看。

    前言 今天摸鱼逛知乎,偶然看到了一个回答,8月份的,是关于SaToken的,一时好奇就点了进去. 好家伙,因为一个star的问题,提问的人抱怨了许多,我有些意外,就仔细看了下面的评论,想知道一部分人的 ...

  5. Python来源介绍

    python来源 1.1 Python来源 1989年的圣诞节,一位来自荷兰,名叫Guidio van Rossum的年轻帅小伙子,为了打发无趣的时光,决定改善他参与设计,不是很满意的ABC语言,随着 ...

  6. 编译python为可执行文件遇到的问题:使用python-oracledb连接oracle数据库时出现错误:DPY-3010

    错误原文: DPY-3010: connections to this database server version are not supported by python-oracledb in ...

  7. 基于matomo实现业务数据埋点采集上报

    matomo是一款Google-analytics数据埋点采集上报的平替方案,可保护您的数据和客户的隐私:正如它官网的slogan: Google Analytics alternative that ...

  8. [ABC202E] Count Descendants 题解

    Count Descendants 题目大意 给定一颗以 \(1\) 为根的树,多次询问求某点的子树中深度为给定值的点的个数. 思路分析 对于每个深度开一个 vector,从大到小存下这个深度的所有点 ...

  9. 2D物理引擎 Box2D for javascript Games 第五章 碰撞处理

    2D物理引擎 Box2D for javascript Games 第五章 碰撞处理 碰撞处理 考虑到 Box2D 世界和在世界中移动的刚体之间迟早会发生碰撞. 而物理游戏的大多数功能则依赖于碰撞.在 ...

  10. 20.1 OpenSSL 字符BASE64压缩算法

    OpenSSL 是一种开源的加密库,提供了一组用于加密和解密数据.验证数字证书以及实现各种安全协议的函数和工具.它可以用于创建和管理公钥和私钥.数字证书和其他安全凭据,还支持SSL/TLS.SSH.S ...