学习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

Selenium刚玩一会儿,就感受了私人秘书的体验的更多相关文章

  1. 给刚玩Hadoop的朋友一些建议

    随着两会中间央视新闻天天说大数据,很多人纷纷开始关注大数据和Hadoop以及数据挖掘和数据可视化了,我现在创业,遇到很多传统数据行业往Hadoop上面去转型的公司和个人,提了很多问题,大多数问题还都是 ...

  2. selenium之 玩转鼠标键盘操作(ActionChains)

    用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件——ActionChains sele ...

  3. [python / selenium] - 用python刷公选课是一种什么体验?

    前言 看公选课还是能学到很多知识的,这里是给大家提供一个selenium的使用思路(好好学公选课,我真的看了) 思路 当观看者移动鼠标到某一范围时就会停止播放,就让selenium一直将鼠标悬停在视频 ...

  4. 玩转Libmodbus(二) 写代码体验

    libmodbus在线文档 https://www.jianshu.com/p/d93c17485c0a 原创篇 参考上一篇转载的博客,我的ubuntu上的最终生成的动态库的路径,下图所示 我的lin ...

  5. selenium webdriver学习(一)------------快速开始(转载JARVI)

    selenium webdriver学习(一)------------快速开始 博客分类: Selenium-webdriver selenium webdriver 学习 selenium webd ...

  6. words2

    餐具:coffee pot 咖啡壶coffee cup 咖啡杯paper towel 纸巾napkin 餐巾table cloth 桌布tea -pot 茶壶tea set 茶具tea tray 茶盘 ...

  7. [Mac A]为什么国外程序员爱用 Mac?

    from http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜 ...

  8. [转] [腾讯游戏学院] Roguelike到底是什么?

    如果你是一位资深游戏玩家,那么最近你肯定在哪里看到过 Roguelike 这个词.Roguelike 这个古老的游戏类型现在又变得很潮流,其中各种要素都在不断的被新游戏借鉴.作为一名就是比你有更多空余 ...

  9. [No000025]停止自嘲—IT 技术人必须思考的 15 个问题

    行内的人自嘲是程序猿.屌丝和码农,行外的人也经常拿IT人调侃,那么究竟是IT人没有价值,还是没有仔细思考过自身的价值? 1.搞 IT 的是屌丝.码农.程序猿? 人们提到IT人的时候,总会想到他们呆板. ...

随机推荐

  1. 【EXPDP】Oracle expdp中并行问题

    $ expdp hr/hr tables=test1 dumpfile=test2.dmp directory=pump parallel=4 Export: Release 11.2.0.4.0 - ...

  2. Linux echo和cat和grep和tr的基础用法

    Linux vim   搜索 echo  :   显示输出功能 echo oldboy>1.txtx cat 1.txtx >  重定向   文件内容覆盖 >> 追加重定向   ...

  3. ctfhub技能树—sql注入—Cookie注入

    手注 打开靶机 查看页面信息 查找cookie 测试是否为cookie注入 抓包 尝试注入 成功查询到数据库名 查询表名 查询字段名 查询字段信息 成功拿到flag sqlmap 查询数据库名 pyt ...

  4. 基于Dockfile构建JAVA环境网站镜像

    查看本地目录 [root@docker tomcat]# ls apache-tomcat-8.5.16.tar.gz  Dockerfile  jdk-8u91-linux-x64.tar.gz   ...

  5. 与图论的邂逅05:最近公共祖先LCA

    什么是LCA? 祖先链 对于一棵树T,若它的根节点是r,对于任意一个树上的节点x,从r走到x的路径是唯一的(显然),那么这条路径上的点都是并且只有这些点是x的祖先.这些点组成的链(或者说路径)就是x的 ...

  6. JS中常用的工具类

    一.日期工具类 /** * 日期时间工具类 * @type {{dateFormat}} */ var DateTime = function () { var patterns = { PATTER ...

  7. Bagging和Boosting的介绍及对比

    "团结就是力量"这句老话很好地表达了机器学习领域中强大「集成方法」的基本思想.总的来说,许多机器学习竞赛(包括 Kaggle)中最优秀的解决方案所采用的集成方法都建立在一个这样的假 ...

  8. JavaScript中创建数组的方式!

    JavaScript中创建数组的方式! 利用数组字面量 // 1 直接量 console.log(Array.prototype); var arr = [1, 2, 4, 87432]; // 注意 ...

  9. XShell的手动直连,避免配置ssh免密的一些问题

  10. 给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息。

    1 import java.text.SimpleDateFormat; 2 import org.apache.hadoop.fs.*; 3 4 public class E_RecursiveRe ...