python3的selenium实例应用

1、pycharm安装selenium

pip install selenium

注意自己安装的python的解释器有几个,如果用的解释器没有加入到环境变量中,是无法调用webdriver的

2、安装webdriver

安装Chrome 浏览器对应版本的 ChromeDriver,才能驱动 Chrome 浏览器完成相应的操作。

相关链接:

官方网站:https://sites.google.com/a/chromium.org/chromedriver
下载地址:https://chromedriver.storage.googleapis.com/index.html
我们需要根据Chrome 浏览器的版本去下载,点击 Chrome 菜单 “帮助”→“关于 Google Chrome”,即可查看 Chrome 的版本号。

我的Chrome游览器的版本为 105.0.5195.127

国内下载谷歌地址可能比较慢,我们可以通过阿里的镜像站下载,地址:http://npm.taobao.org/mirrors/chromedriver/

只要前三组数字相同就可以适配,尽量选择前三组数字版本号相同的最新的版本,windows就选win32,解压出来之后将.exe 文件移动到用的python解释器的根目录,将chromedriver.exe所在目录加入环境变量。

这里推荐将chromedriver.exe放入python安装目录下的Scripts目录中。
 

3、开始第一个简单的selenium自动化示例

# 导包
import time
from time import sleep
from selenium import webdriver
import pyperclip
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

# 实例化浏览器
driver = webdriver.Chrome()
driver.maximize_window()  # 最大化网页

# 打开网址
driver.get('https://www.baidu.com/')

# 老的写法
# ele = driver.find_element_by_id('kw').send_keys('易烊千玺')
# 新的写法
# driver.find_element(By.XPATH, '//*[@id="kw"]')
# # 根据xpath选择元素(万金油)
# driver.find_element(By.CSS_SELECTOR, '#kw')
# # 根据css选择器选择元素
# driver.find_element(By.NAME, 'wd')
# # 根据name属性值选择元素
# driver.find_element(By.CLASS_NAME, 's_ipt')
# # 根据类名选择元素
# driver.find_element(By.LINK_TEXT, 'hao123')
# # 根据链接文本选择元素
# driver.find_element(By.PARTIAL_LINK_TEXT, 'hao')
# # 根据包含文本选择
# driver.find_element(By.TAG_NAME, 'title')
# # 根据标签名选择
# # 目标元素在当前html中是唯一标签或众多标签第一个时候使用
# driver.find_element(By.ID, 'su')
# # 根据id选择

ele = driver.find_elements(by=By.CSS_SELECTOR, value='#kw') # 新的写法需要详细看一下新方法的调用
# ele[0].send_keys("李健")  # 现在ele是作为list列表返回,所以需要进行选定列表中的第一项,另外send_keys方法是模拟键盘输入,输入较慢,后应加线程挂起时间,否则后面的click操作容易崩掉
sea = driver.find_elements(by=By.CSS_SELECTOR, value='#su')
# sea[0].click()
# sleep(5)

# pyperclip适用于快速大量重复输入 耗时:0.30717897415161133 秒
start_time = time.time()
# ele[0].send_keys('在' * 1000)  # 发送1000个字符串 耗时:1.4940814971923828 秒 都可以进行测试一下尝试一下
# pyperclip.copy('在' * 1000)  # 粘贴到剪切板
# ele[0].send_keys(Keys.CONTROL, 'v')  # 发送ctrl+v 粘贴
sea[0].click()
end_time = time.time()
print(f'耗时:{end_time-start_time} 秒')
sleep(2)

# 清空
# ele[0].clear()
# ele[0].send_keys('赵雷')
# sleep(5)
# sea[0].click()

# 时间轴看效果
sleep(3)

# 关闭页面
driver.quit()

根据好多前辈的文件,我编辑了,但是好多都是python2的语句,python3有点不适用,所以就按照之前博主写的例子改成现在用的,里面每个细节我基本上都有解释

重点:

1、元素定位方法跟之前的有所变化(这是最新python3的写法)

# 老的写法
# ele = driver.find_element_by_id('kw').send_keys('易烊千玺')
# 新的写法
# driver.find_element(By.XPATH, '//*[@id="kw"]')
# # 根据xpath选择元素(万金油)
# driver.find_element(By.CSS_SELECTOR, '#kw')
# # 根据css选择器选择元素
# driver.find_element(By.NAME, 'wd')
# # 根据name属性值选择元素
# driver.find_element(By.CLASS_NAME, 's_ipt')
# # 根据类名选择元素
# driver.find_element(By.LINK_TEXT, 'hao123')
# # 根据链接文本选择元素
# driver.find_element(By.PARTIAL_LINK_TEXT, 'hao')
# # 根据包含文本选择
# driver.find_element(By.TAG_NAME, 'title')
# # 根据标签名选择
# # 目标元素在当前html中是唯一标签或众多标签第一个时候使用
# driver.find_element(By.ID, 'su')
# # 根据id选择

2、元素定位返回的不是对象,现在变成list属性了,所以需要制定列表中的首位之后,进行操作元素的点击和输入

ele = driver.find_elements(by=By.CSS_SELECTOR, value='#kw') # 新的写法需要详细看一下新方法的调用
ele[0].send_keys("李健")  # 现在ele是作为list列表返回,所以需要进行选定列表中的第一项,另外send_keys方法是模拟键盘输入,输入较慢,后应加线程挂起时间,否则后面的click操作容易崩掉
sea = driver.find_elements(by=By.CSS_SELECTOR, value='#su')
sea[0].click()

3、pyperclip类,优点适用于快速大量重复的输入等操作,不同于send_keys() 模拟键盘操作,但是send_keys()在应对一些网页数据输入有保护机制的时候可能是有效的

# pyperclip适用于快速大量重复输入 
start_time = time.time()
ele[0].send_keys('在' * 1000)  # 发送1000个字符串 
pyperclip.copy('在' * 1000)  # 粘贴到剪切板
ele[0].send_keys(Keys.CONTROL, 'v')  # 发送ctrl+v 粘贴
sea[0].click()
end_time = time.time()
print(f'耗时:{end_time-start_time} 秒')
sleep(2)
# pyperclip 的耗时:0.30717897415161133 秒
# send_keys 的耗时:1.4940814971923828 秒
# 都可以测试一下看看

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值