Selenium的简介
Selenium可以使浏览器进行自动化操作。你用这个工具做什么完全取决于你自己。主要是为了测试目的自动化Web应用程序,但肯定不仅限于此。
Selenium得到了一些最大的浏览器供应商的支持,这些供应商已经有的也使Selenium成为他们浏览器的一部分。它也是无数其他浏览器自动化工具、API和框架中的核心技术。
· 官网地址:https://www.seleniumhq.org/
2
Selenium结合Python的使用
| Selenium的安装
直接通过pip命令即可安装Selenium相关的API。
pip3 install selenium
| Selenium调用浏览器
· 项目准备:
1. 新建一个python项目,叫做web自动化
2. 新建一个python文件,叫做demo.py
3. 导入selenium模块中的webdriver
4. 通过webdriver获取chrome的driver对象
· 代码如下:
from selenium import webdriver
driver = webdriver.Chrome()
· 运行结果:
运行后,会自动打开一个chrome的程序,如果没有打开并且报错了也不要慌。马上就说。
| 缺少chromedriver的问题
如果上面的代码,并没有打开网站,而是报错了。提示信息为缺少chromedriver,会给你一个网站,点击去。
这个网站在国内打不开,我来给大家放几张截图。
chromedriver是需要下载的。其实这个网站也已经说得很清楚了,chrome是72的版本,对应的是chromedriver是2.46的版本。换句话说,你自己想要做自动化的chrome是什么版本,就需要下载对应版本的chromedriver。
如何查看自己chrome的版本呢?
直接在chrome浏览器中输入 chrome://settings/help 即可查看,如图所示。
大家可以看到,我这里是71的版本。那么71应该下载什么版本的chrome呢?
百度搜一下 ”chromedriver 对应版本“,其实有很多相关的资料,我这里给大家放个截图:
引用:https://blog.csdn.net/yoyocat915/article/details/80580066
我们发现 71 的chrome需要使用 2.43/2.44/2.45/2.46 都可以,至于用哪个,看心情吧,都可以,就算不可以,换一个就行了。
淘宝为我们贴心的准备的镜像地址进行下载。http://npm.taobao.org/mirrors/chromedriver/
我这里下载的2.46的版本,再选择对应的平台,解压后会得到一个叫做chromedriver的文件。
接下来,将这个文件放到一个不太经常移动且最好不要有中文的目录下,并将这个目录配置到环境变量中。
下图是mac的配置方法,大家可以自行查找配置环境变量的方法,这里就不在赘述了。
此时,就完美结果这个问题啦,想火狐之类的可能也会出这种问题,解决思路其实是一样的,火狐的浏览器叫做geckodriver而已。
| 打开要测试的网站
环境都搭建好了,接下在需要打开对应的网站即可。比如百度。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
使用driver对象中的get方法即可,务必记得加上协议头http。
3
Selenium基本语法
接下来我们做一个简单的小案例,在百度中输入10086,并且点击百度一下。查看浏览器的结果。
| 输入
想要对百度输入10086这个关键字,要先定位到对应的输入框,我们右键对着输入框查看其id。
可以看到,输入框的id为kw,我们通过driver的findelementbyid的方法,进行定位。然后通过这个元素的sendkeys进行输入文字,右键运行即可。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
kw = driver.find_element_by_id("kw")
kw.send_keys("10086")
| 点击
我们使用同样的方法查看 百度一下 按钮的id
再使用元素的click方法进行点击即可。为了更好的看到效果,我们在中间加了一个time.sleep
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
kw = driver.find_element_by_id("kw")
kw.send_keys("10086")
time.sleep(3)
driver.find_element_by_id("su").click()
4
总结
其实所谓自动化,就是让电脑模拟人的操作而已,人按什么顺序操作,电脑也应该按什么顺序操作。人先输入关键字,再点击百度一下,电脑也是一样的。
自动化更多的是人如何做。我们又如何定位到这个元素,然后进行对应的操作。