Selenium是什么?一句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,python有selenium库可以专门用来操纵浏览器,下面我用火狐浏览器为例介绍代码登录邮箱和空间的过程。
环境配置
首先安装selenium,在终端执行pipinstall selenium即可。
然后安装火狐浏览器,如果本地有火狐浏览器即可忽略本操作。
安装火狐驱动程序,Firefox的驱动geckodriver下载地址:
https://github.com/mozilla/geckodriver/releases/
下载解压后把geckodriver.exe(linux是geckodriver文件)发到Python的安装目录的Scripts文件夹里面就可以了。
注:不使用火狐浏览器也可以使用谷歌浏览器Chrome,下载安装Chrome,在
或者
http://npm.taobao.org/mirrors/chromedriver/
下载对应的webdriver,对应表如下
然后将chromedriver.exe文件放到python安装目录下的Scripts文件夹下即可
登录qq邮箱
webdriver提供八种元素定位方法,如表
我在这里发现xpath(绝对路径定位)比较方便,尤其是在使用工具的情况下,在火狐浏览器附加插件中,如图
搜索xpath,选择第一个插件
这样,我们就可以避免看复杂的网页源代码查找相关元素了,尤其是在网页很复杂的情况下,合理使用xpath插件可以提高效率。
选择基本版后,网页变成这样
好了,继续补上代码,如下
程序运行结果如下动态图
登录QQ空间
在qq空间的登录界面,如图,我们发现,没有基本版这个选择捷径了,就只能在中间那选择二维码登录或者账号密码登录
使用xpath定位的时候发现无法定位,如图
但是别忘了,没法定位是有原因的,鼠标右键单击这发现其实这是一个框架,选择“查看框架源代码”,在地址栏下删除“view-source:” 回车,然后再用xpath重新定位,如图
代码如下:
程序运行结果:
图中程序点击登陆的时候突然出现了网络繁忙之类的,我马上再点击一下补了一刀,哈哈哈,完美。
写在最后
登录QQ空间和QQ邮箱的时候有可能要输验证码,但是一直叫输验证码肯定是异常情况,账号或者密码错误。
使用自己经常使用的电脑一般不会输验证码,但是自动化登录频率多了会。
其他浏览器在插件里输入xpath发现工具还挺多,当发现生成的绝对路径很长的时候多半也是对的
当登录了QQ可以直接点击QQ头像的那个图标,使用自动化程序也是可以的,只是绝对路径需要换一个工具查找,因为使用xpath finder的时候点一下图标,路径没出现,但是……已经登录了。
我的困惑:
在登录QQ空间的时候我发现登录界面是在一个框架里面的,在查网页源代码的时候我惊讶的发现框架竟然是被注释掉了,如图:
那么问题是,这段被注释掉的代码是如何执行的呢?我是非常非常非常的惊讶,恳请大佬们回答,解决我目前最大的困惑。
(完)
看完本文有收获?请转发分享给更多人
关注「Python那些事」,做全栈开发工程师
领取专属 10元无门槛券
私享最新 技术干货