学习python的过程中,少不了接触第三方库,毕竟作为胶水语言python的强大之处也就是第三方库体量庞大,无疑大大增强了python的战斗力。

有时候想完成网页自动化操作,这时候Selenium进入了我的世界。从获悉它是用来控制浏览器完成自动化任务这一属性以后,就如痴如醉的开始从官网和百度教程涉猎它的用法。

玩了一天,目前学会了自动打开浏览器,然后输入指定的网址,接着最大化。随后发现它还可以进行键鼠操作,这让我想到了打开电脑,启动python,自动登录腾讯视频账号。

说干就干,马上动手,不知道会有怎样的惊喜?

流程一:启动浏览器,然后最大化

 

首先安装Selenium库在你的本地环境,前提是安装了Python。我用的是python3.9.1在我其他文章可以看到安装教程。

打开cmd,然后使用pip(包管理软件)进行安装,输入如下命令:

pip install selenium

像我这样已经安装完成。

不同的浏览器要下载不同的驱动,我用的是谷歌,所以在

谷歌驱动官方下载地址:

https://chromedriver.storage.googleapis.com/index.html

下载好的驱动放在python安装目录下就行,然后在python里引用selenium的chrome,像这样:

from selenium.webdriver import Chrome

然后打开调用浏览器,像这样:

driver = Chrome()

接着测试一下能否打开浏览器。

好的,环境一切就绪。现在可以按照官网的教程开始操作了。

selenium官方中文文档

https://www.selenium.dev/documentation/zh-cn/

最大化命令如下:

driver.maximize_window()

流程二:登录腾讯视频,然后最大化

get命令用于打开网址,接下来,我们打开腾讯视频:

driver.get(''https://v.qq.com/)

既然是看电影,没有会员怎么行,这就需要登录了。由于selenium可以操作键盘和鼠标,所以我们登录的输入和点击都可以完成。

那么点击命令是在寻找到节点的情况下使用click(),而寻找的过程类似解析HTML的文档树,方法很多,可以通过id,classname,css selector等等,但我觉得这个最好用:xpath。而寻找的过程需要一定的前端基础,这里直接放代码,点击打开登录框:

driver.find_element_by_xpath("//div[@id='mod_head_user']").click()

虽然我觉得隐式等待可以提一下,但是我的千兆宽带觉得用不上。大家感兴趣的可以了解一下:implicitly_wait

同样的道理,我们点击QQ登录。

我电脑登录了qq,所以自然就出来了,再次执行点击命令就可完成登录。如果没有登录qq的朋友可以,切换到账号密码登录,操作方法和上面差不多,都是属于点击命令,这里就不赘述。

不过这里要给大家说一个概念,叫iframe,这个登录窗口是一个iframe页面,也就是内嵌网页。我们直接使用上述的命令无法点击,需要切换到frame里才能操作。怎么切换呢?命令如下:

经过测试,腾讯视频登录按钮内嵌了两层iframe,所以需要依次切换,像这样:

driver.switch_to.frame('_login_frame_quick_') driver.switch_to.frame('ptlogin_iframe')

然后点击即可,至此已经完成了登录操作:

driver.find_element_by_xpath("//span[@id='img_out_1667650021']").click()

当然selenium的神奇之处远不止于此,后续将继续研究记录。

零基础学Java或Python的兄弟姐妹,资料干货尽在我的公众号:lunvey

最新文章

  1. Tomcat Server Timeouts属性的设置
  2. Android应用字体更改
  3. weed-fs参数列表
  4. powerdesigner设置表主键列为自动增长。
  5. luvit 初尝鲜
  6. Longest Common Prefix [LeetCode 14]
  7. Bear 實驗室: 什麼是Git flow ? 如何在SourceTree使用Git flow管理開發!
  8. .net Web.Config配置文件 转
  9. JDBC连接mysql编程
  10. 一些pyhon的学习资料
  11. 接收时必须库存可处理标识为Y
  12. STM32F4的FPU单元讲解
  13. Python web服务器
  14. Android播放在线音乐文件
  15. [Swift]LeetCode802. 找到最终的安全状态 | Find Eventual Safe States
  16. Scala视图界定
  17. WCF系列教程之消息交换模式之请求与答复模式(Request/Reply)
  18. inux下配置rsyncd服务
  19. java date HHmmss hhmmss
  20. 服务器CPU居高不下--解决问题历程

热门文章

  1. 不要把file,process或者super权限授予管理员以外的账号
  2. scp传文件夹
  3. 类转json的基类实现
  4. CTFHub - Misc(流量分析)
  5. CTFshow萌新赛-千字文
  6. 性能测试工具locust简单应用
  7. LuoguP5488 差分与前缀和
  8. 原生ajax分享
  9. RVA与FOA的转换
  10. 有状态(Stateful)应用的容器化 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1020178