当我们通过webdriver中的find_element函数定位到元素后,其实返回的是WebElement对象,而该对象有很多重要的方法,比如输入文本,点击按钮,获取属性,截屏等
WebElement类的方法介绍
文本输入与清除
send_keys()
在元素上模拟按键输入,通常用于向输入框中填充文本。
clear()
清除元素的输入内容,如清空一个文本输入框。
点击操作
click()
单击元素,可以是按钮、链接等可点击的元素。
submit()
提交表单,也可以使用click()方法,但submit()方法专门用于表单的提交。
元素属性与状态获取
get_attribute(element_name)
获取元素的属性值,如id、name、type等。
is_selected()
判断元素是否被选中,常用于单选框、复选框等。
is_displayed()
判断元素是否可见,返回一个布尔值。
is_enabled()
判断元素是否可启用,例如,某些按钮在特定条件下可能不可点击。
获取元素尺寸与位置
size
返回元素的尺寸,通常包含宽度和高度。
location
返回元素在页面上的位置,通常是元素的左上角坐标。
获取元素信息
text
获取元素的文本内容,如获取一个段落或链接的文本。
tag_name
获取元素的tag信息。
截屏
screenshot(filename)
将当前元素截屏保存为png图片
screenshot_as_base64
将当前元素截屏保存为base64编码的字符串
screenshot_as_png
将当前元素截屏保存为base64字符串,然后解码为2进制字节码
以上函数位于如下webelement.WebElement类中:
示例:打开百度输入文本后点击搜索(输入框操作)
我们以获取元素的id举例,先上代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
# 创建Safari浏览器的WebDriver实例
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.baidu.com")
#最大化网页
driver.maximize_window()
#查找id=kw的元素位置,对应于搜索输入框,找到后我们输入字符python
driver.find_element(By.ID,'kw').send_keys('python')
##查找id=su的元素位置,对应于‘百度一下’的按钮,找到后我们点击按钮
driver.find_element(By.ID,'su').click()
# 等待几秒
sleep(5)
# 关闭浏览器
driver.quit()
代码执行后,网页自动打开并搜索如下:
示例:打开百度输入用户名和密码进行登录(表单操作)
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.baidu.com")
driver.maximize_window()
sleep(1)
#点击登录
driver.find_element(By.ID,'s-top-loginbtn').click()
sleep(1)
#输入用户名
driver.find_element(By.ID,'TANGRAM__PSP_11__userName').send_keys('*****')
sleep(1)
#输入密码
driver.find_element(By.ID,'TANGRAM__PSP_11__password').send_keys('*****')
sleep(1)
#点击同意
driver.find_element(By.ID,'TANGRAM__PSP_11__isAgree').click()
sleep(1)
#点击提交
driver.find_element(By.ID,'TANGRAM__PSP_11__submit').submit()
程序执行后会自动输入用户和密码,点击登录
示例:获取元素后将元素截屏
我们获取元素后,使用函数screenshot将元素截屏,参数filename传入完整的png文件名路径或者文件名(放在当前路径)
测试代码:打开头条网站,定位到左上角的‘下载头条app’然后截屏保存。
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Safari()
#打开传入的URL网页地址
driver.get("https://www.toutiao.com/")
sleep(6)
element = driver.find_element(By.XPATH,'//*[@id="root"]/div/div[3]/div[1]/div')
element.screenshot('1.png')
element.screenshot('/Users/aaa/Donwloads/1.png')
执行后打开截图如下:
示例:获取元素的text/ta gtag_name信息
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Safari()
#打开传入的URL网页地址
driver.get("https://www.toutiao.com/")
定位到左上角的‘下载头条app’元素,并打印元素的信息
element = driver.find_element(By.XPATH,'//*[@id="root"]/div/div[3]/div[1]/div')
#打印该元素的一些信息
print(element.tag_name)
print(element.text)
执行结果:
DIV
下载头条APP扫码下载今日头条
示例:获取元素的属性值
通过get_attribute函数,传入参数比如id,class,xpath等信息,返回对应的值。
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Safari()
#打开传入的URL网页地址
driver.get("https://www.toutiao.com/")
#定位到左上角的‘下载头条app’然后截屏保存。
element = driver.find_element(By.XPATH,'//*[@id="root"]/div/div[3]/div[1]/div')
#打印该元素的属性值
print(element.get_attribute('class'))
执行结果:
download-app-wrapper
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳。
----感谢读者的阅读和学习,谢谢大家。
版权归原作者 科雷learning 所有, 如有侵权,请联系我们删除。