自动化系列之selenium

selenium下phantomjs、firefox

Posted by TuoX on June 16, 2017

今天我们来学习一下,一个web测试工具selenium。该工具主要用于自动化测试,当然目前我用到的功能并不是自动化测试,只是作为学习使用。

说白了其实它就是可以模拟浏览器的各种操作。请求、输入、点击、滑动、截图等。

接下来我们说下selenium调用firefox以及phantomjs的实现。

在python下使用,异常的轻松。

FireFox

火狐浏览器。想必大家都很清楚,开源的浏览器,也是程序员最喜欢的浏览器之一。

selenium是原生支持火狐浏览器的,我们只需要下载对应的驱动就可以了。

官网的驱动下载 https://github.com/mozilla/geckodriver/releases

我建议直接放到相对应的环境目录下,这样子在写代码的时候就不需要指定驱动的目录。有强迫症的人看到会非常受不了,喜欢代码的简洁性。

windows下我是把下载好的驱动放到,python的安装目录,scripts下面。linux呢,是放在/usr/local/bin目录下,待会儿说的phantomjs也是一样的逻辑。

环境准备好了,那接着我们就写一段代码来感受下,seleninum的魔力。模拟浏览器百度搜索tuox的博客,哈哈。

from selenium import webdriver
import time


driver = webdriver.Firefox()
url = 'https://www.baidu.com/'
driver.get(url)
kw = driver.find_element_by_id('kw')
kw.clear()
kw.send_keys('https://linzhiming0826.github.io/')
btn_search = driver.find_element_by_id('su')
btn_search.click()
time.sleep(2)
driver.quit()

我们来解读一下代码,首先我们导入selenium的浏览器驱动模块,接着以firefox的驱动方式打开百度网站,并且在输入框输入我们博客的地址,接着点击搜索,休息两秒,然后退出。其实selenium非常强大,有许多方法判断该网页是否已经加载成功,可以是每隔一段时间检测某个元素是否加载成功或者强制等待几秒等。比如webdriverwait模块,这里就不多介绍,讲这些用处也不大,一查文档就可以了,没有必要记住这么多,主要还是知道它的原理,使用场景。

本来想录一下这个过程做一个动画的,感受一下它的魔力,但是想想还是让大家自己去感受吧。主要是我因为我懒,哈哈。

Phantomjs

这个是一个无界面的浏览器,简直是爬虫界的神器,每当遇到瓶颈时或者需要模拟登录、操作的时候都会派上用场。不过我个人还是建议直接破解的方式来获取信息,因为这个才是最高效的。不过它用来应应急或者来个网页截屏也是很不错啊。接下来我就演示下,截图吧,截什么图呢,那就截图我们的博客吧,各位看官可以根据的喜好去截取自己喜欢的网站哈。

先去官网下载一个phantomjs的软件 http://phantomjs.org/ 一样的放到我们的环境里面。

代码就是访问一个我们的博客,然后截个图,退出。

截图怎么变成手机模式了,因为我们没有指定浏览器的大小,网站自适应成手机模式了。说到这里,大家应该知道selenium竟然还可以指定浏览器大小,那是肯定的,只要是手工可以操作的,它都可以模拟出来。

今天的内容就介绍到这里咯,大清早起床,把昨天应该写的文章给写完了。好了,我要去吃早饭,我们下次再见。