Selenium查找元素、元素的属性和方法
查找元素
官方文档: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查找元素、元素的属性和方法的更多相关文章
- DOM元素对象的属性和方法(2)
11.contentEditable 作用:设置或返回元素内容可否编辑布尔值,HTML5新增属性 <!DOCTYPE html> <html> <head> < ...
- DOM元素对象的属性和方法(1)
一.accessKey() 作用:获取元素焦点快捷键:设置快捷键后,使用Alt+快捷键,让元素快速获得焦点, <!DOCTYPE html> <html> <head&g ...
- selenium自动化之元素定位方法
在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...
- 使用Selenium对网页元素进行定位的诸种方法
使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接. 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了 ...
- python+appium 查找某个元素find_element()并click()点击,正向判断与反判断的方法封装
使用场景: 在自动化测试过程中,难免会用到反判断,包括异常情况的处理,比如:find_element_by_name('测试') 判断"测试"是否存在,存在则点击,不存在则执行其他 ...
- 【亲测显式等待】Selenium:元素等待的4种方法
Selenium:元素等待的4种方法 1.使用Thread.sleep(),这是最笨的方法,但有时候也能用到而且很实用. 2.隐式等待,隐性等待是指当要查找元素,而这个元素没有马上出现时,告诉We ...
- selenium java-3 定位元素的八种方法
web driver提供了八种元素定位的方法: id name class name tag name link text partial link text xpath css selector 如 ...
- selenium 获取某元素的 某属性 的值
selenium 获取某元素的 某属性的值 1 先通过元素定位,获得此元素的 WebElement; WebElement yuansu = driver.findElement(By.clas ...
- Selenium 八种元素定位方法
前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...
- Selenium八种元素定位方法源码阅读
接触过Selenium的都知道元素定位有八种方法,但用不同的方法在执行时有什么区别呢? 元素定位8种方法(Python版),当然还有每一个方法对应的find_elements方法 find_eleme ...
随机推荐
- python 获取本周 ,上周,本月,上月,本季,上季,今年, 去年的第一天和最后一天
import datetime from datetime import timedelta now = datetime.datetime.now()# 获取当前月的天数 month = 2days ...
- QA|如何给我们的自动化测试代码增加日志记录?|Loguru
这里我们用的是loguru,logging虽然是自带的,但确实使用起来比较繁琐,loguru在Logging基础上增加了很多个性化功能,使用起来也比较简单,所以就使用loguru 代码如下: 1 # ...
- 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(3)--自定义用户控件
在我们创建界面元素的时候,不管在Vue3+ElementPlus的前端上,还是Winform桌面端上,都是会利用自定义用户控件来快速重用一些自定义的界面内容,对自定义用户控件的封装处理,也是我们开发W ...
- 五分钟k8s实战-使用Ingress
背景 前两章中我们将应用部署到了 k8s 中,同时不同的服务之间也可以通过 service 进行调用,现在还有一个步骤就是将我们的应用暴露到公网,并提供域名的访问. 这一步类似于我们以前配置 Ngin ...
- 解决Nginx SSL 代理 Tomcat 获取 Scheme 总是 Http 问题
背景 公司之前用的是http,但是出于苹果app审核和服务器安全性问题,要改为https,我们公司用的是沃通的ssl,按照沃通的官方文档提供的步骤完成服务器的配置. 架构上使用了 Nginx +tom ...
- 简单的Oracle增删改查笔记
- Oracle字符串函数-Translate()总结
Oracle的Translate(expr,from_string,to_string)是字符串操作函数,实现from_string,to_string字符的一 一替换 1)典型示例: select ...
- MySQL到TiDB:Hive Metastore横向扩展之路
作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方 ...
- Java-网络编程(TCP-UDP)
Java-网络编程(TCP-UDP) 网络基础 网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的.中间最主要 ...
- Linux第一次周总结
第一章 初识 Linux 1.Linux简介 Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统 ...