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 '
本文来自博客园,作者:蕝戀,转载请注明原文链接:https://www.cnblogs.com/juelian/p/17559571.html