查看原文
其他

偷懒小妙招| selenium之玩转鼠标键盘操作(上)

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:戴   雯,中南财经政法大学金融学院

本文编辑:寇晓璇

技术总编:王子一

Python云端课程来啦!

      寒雪梅中尽,春风柳上归。新的一年,正值开学之际,为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!原价2400元的Python编程培训课程,现在仅需100元即可通过腾讯课堂参与学习。详细培训大纲及报名方式请查看推文Python云端课程福利大放送!0基础也能学~或点击文末阅读原文直接报名呦~另外,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!
Selenium 是什么?一句话,自动化测试工具。它可以模拟电脑自动打开浏览器,模拟鼠标点击及键盘输入,也正因为如此,selenium成为了爬虫中不可多得的利器,是应对网站反爬的强有效方法。
今天咱们要说的就是关于selenium自动化模拟鼠标和键盘事件的那些事儿,虽说是基础,但学会了它们,你就可以偷懒 自动点点点了。

模拟鼠标和键盘事件,最基础的也是最常用的操作有三种:

  • clear():清空内容

  • click():模拟鼠标单击

  • send_keys():模拟键盘输入文本

进行基础操作时,需在开头导入 selenium 库。下面以 百度搜索 为例,用一段简单的小程序,为大家展示这三种基本操作的功能。
1from selenium import webdriver
2import time
3
4# 打开Chrmoe浏览器
5CHROME_DRIVER = 'D:/python/Driver/chromedriver.exe'
6driver = webdriver.Chrome(executable_path=CHROME_DRIVER)
7
8# 打开百度百科页面
9driver.get("https://baike.baidu.com/")
10time.sleep(1)
11
12# 通过id定位到百度百科搜索框,输入 中南财经政法大学
13driver.find_element_by_id("query").send_keys("中南财经政法大学")
14time.sleep(1)
15
16# 通过id定位到“进入词条”,点击“进入词条”按钮
17driver.find_element_by_id("search").click()
18time.sleep(1)
19
20# 通过id定位到百度百科搜索框,清空输入框
21driver.find_element_by_id("query").clear()
22time.sleep(1)
23driver.quit()
程序运行的效果如下:

基础操作主要是模拟鼠标单击和键盘输入文本信息,但是,光掌握这些是不够的,咱们日常还会用鼠标拖动滑块、按键盘上的回车键等等,这些怎么用selenium实现呢?贪多嚼不烂,今天咱们就先来讲讲selenium中的键盘事件~


键盘事件


除了上面介绍的send_keys()方法可以模拟键盘输入文本外,selenium还可以模拟键盘功能键的操作,这时需要另外引入键盘模块——Keys类。
1from selenium.webdriver.common.keys import Keys
具体的函数形式及操作含义如下:
函数形式操作含义
send_keys(Keys.BACK_SPACE)删除键(BackSpace)
send_keys(Keys.SPACE)空格键(Space)
send_keys(Keys.ENTER)回车键(Enter)
send_keys(Keys.CONTROL,'a')全选(Ctrl+A)
send_keys(Keys.CONTROL,'c')复制(Ctrl+C)
send_keys(Keys.CONTROL,'x')剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v')粘贴(Ctrl+V)
下面以 百度搜索 为例, 展示如何运用selenium的键盘模块模拟键盘进行操作,代码如下:
1from selenium import webdriver
2from selenium.webdriver.common.keys import Keys
3import time
4
5#打开Chrmoe浏览器
6CHROME_DRIVER = 'D:/python/Driver/chromedriver.exe'
7driver = webdriver.Chrome(executable_path=CHROME_DRIVER)
8
9#打开百度页面
10driver.get("https://www.baidu.com")
11
12#通过id定位到百度搜索框,然后输入“爬虫俱乐部!”
13driver.find_element_by_id("kw").send_keys("爬虫俱乐部!")
14time.sleep(2)
15
16#删除键删除输入框内结尾的单个字符"!"
17driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
18time.sleep(2)
19
20#空格键在文本末尾处输入空格
21driver.find_element_by_id("kw").send_keys(Keys.SPACE)
22time.sleep(2)
23
24#回车键模拟搜索效果
25driver.find_element_by_id("kw").send_keys(Keys.ENTER)
26time.sleep(2)
27
28#全选输入的关键词
29driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a")
30time.sleep(2)
31
32#剪切全选的关键词
33driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"x")
34time.sleep(2)
35
36#粘贴剪贴的关键词
37driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"v")
38time.sleep(2)
39
40#全选关键词
41driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a")
42time.sleep(2)
43
44#复制全选的关键词
45driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"c")
46time.sleep(2)
47
48#清除文本
49driver.find_element_by_id("kw").clear()
50time.sleep(2)
51
52#粘贴复制的关键词
53driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"v")
54time.sleep(2)
55
56driver.quit()
效果如下:

小伙伴们可以复制代码,动手试试哦~友情提示,在用selenium模拟键盘操作前需要先完成selenium的相关配置哦,具体可参考推文《爬虫大杀器|手把手教你配置Selenium》

以上就是本期推文的全部内容了,在下一期推文中,小编会为大家带来有关selenium模拟鼠标操作的小技巧,包括模拟鼠标双击、悬停、拖动滑块等等,一起期待一下吧~友友们别忘记点赞、转发、关注,那我们下期再见啦~~


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐

【爬虫实战】南京地铁又上热榜——客流量分析

renfiles:批量重命名文件的利器

Stata中字符串的处理

物以类聚——浅述k-means聚类算法

我在哪里?调用高德API获取地址经纬度信息

超级简单的条件函数,轻松生成虚拟变量

Python云端课程福利大放送!0基础也能学~

【爬虫实战】“我们,继续新故事”——爬取LOL英雄皮肤

“人像动漫化”—Python实现抖音特效

跨框架合并数据|frlink的用法,你get到了吗

《唐探3》做错了什么?|来自150万字影评的证据

爬虫俱乐部年度总结|《请回答2020》

春节假期临近,来爬爬豆瓣看看有什么好剧

putdocx生成Word文档so easy!

模糊匹配我只用这一招!

利用tushare获取财务数据

爬虫实战|Selenium爬取微信公众号标题与链接

轻轻一点,就知有没有|rqrs命令介绍

强大的正则表达式

自动群发邮件(二)——附带附件

自动群发邮件--email和smtplib基本模块的使用

批量处理变量名和标签的小方法

计算工作日的小能手——workdays

Seminar | 企业错报与银行贷款合同

Seminar | 共同基金行业的性别歧视

Seminar | 来自女儿的塑造:高管、女性社会化与企业社会责任

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存