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                '

posted @ 2023-07-17 11:24  蕝戀  阅读(362)  评论(0编辑  收藏  举报