前言
经过上面两篇的讲解,环境应该已经装好了,下面终于要开始最激动人心的码代码的环节,这个系列目的就是由简入繁,慢慢搭建起来一个 UI 自动化的环境,这边还属于“简”的部分,如果有 python 基础,相信这篇看起来没啥难度,如果没有基础,基本代码也是会做注释的,问题应该也不大。
编辑器的选择
说明
市面上编辑器太多了,用基本都能用,就是用记事本也可以,但是一款好的编辑器,能大大提升编写效率,这里还是比较推荐 pycharm 的,用的几款里面,这个还是排得上号的,其他的,诸如:eclipse,atom,vs code 装上插件,也没问题,不过这个系列还是以 pycharm 作为 IDE,明白原理就好,换成其他的也没啥问题。
当然,这个 IDE 的专业版是收费的,社区版当然已经能满足日常大部分需要了,如果想用专业版,百度一下你就知道,我这里当然支持大家选择正版,支持正版。
IDE 安装
这里就给个下载地址,安装过程就不说了,下一步即可,如果有问题,可以留言。
下载地址:https://www.jetbrains.com/pycharm/
一些使用说明
- 建议打开 toolbar
- python 环境的配置
如果你这个地方是空的,后面有个小齿轮一样的按钮,点击之后,选择 Add,如下图:
之后会出现如下页面
这个页面为啥没标红框,因为这个纯属看个人喜好了,如果想环境之间隔离,就选默认的“New environment”,这个会自动创建个虚拟环境,跟本地的 python 环境是隔离的。左边还有很多选项可以选择,有兴趣的可以百度看下,其实看名字也差不多能知道个大概了。由于我没有这方面需要,我的选择如下图:
然后确定即可,然后可以看到下图:
这个红框标识出来的就是当前 python 环境对应的第三方库的安装情况,pip,setuptools 是自带的,上回我们装了 selenium,urllib3 是 selenium 的依赖,这里都显示了。然后点击右下角的 OK
然后你会发现这边变成了 python3.7,这就 ok 了,如果你本地有多个版本的 python,都可以按照上述步骤添加,必要的时候随意切换。
-
设置模板
这个是干嘛用的了,有时候你会发现,看的一些源码,每个文件之前会标注一些信息,比如,作者,文件名,创建时间,修改时间等,这个模板的作用就是让你在创建文件的时候,这些信息自动填写,不用每次都输入了。
还是这个扳手一样的“设置”按钮,出现设置界面后,左上角的搜索框,搜索“File and Code Template”
由于我们只需要 python 的文件模板,所以设置 python script 即可,如果有其他需要,也可以设置其他格式的文件模板。照着下面这张图配置即可:
最后记得点 OK,然后之后再创建 python 文件的时候,会发现文件自动带上了设置的这些信息。
第一个自动化脚本
上面铺垫了那么多,终于到正题了,让我们开心的码代码吧。
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("第一个脚本")
driver.find_element_by_id("su").click()
driver.quit()
开开心心的打完代码,右键空白处,点击"Run xxx",看我胜利的微笑,然后发现控制台报错了。
Traceback (most recent call last):
File "G:\Python37\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start
stdin=PIPE)
File "G:\Python37\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "G:\Python37\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "G:/codedir/python/webFrame/utils/mytest.py", line 11, in <module>
driver = webdriver.Chrome()
File "G:\Python37\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
self.service.start()
File "G:\Python37\lib\site-packages\selenium\webdriver\common\service.py", line 83, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
有经验的朋友一眼就能发现,由于我们代码写的“webdriver.Chrome()”,且没有指定路径,程序就会去环境变量中找对应的目录中去找 chromedriver,然后发现没有 chromedriver,就报错了,有的朋友又问了,chromedriver 是啥,嗯, 这个问题百度下吧,简单来说就是一个驱动,让我们的程序能通过它来操作浏览器,对应的还有火狐的,ie 的 driver 文件。
既然知道问题所在,那我们去下载个 chromedriver 就行了,国外官网可能由于某些原因上不去,那我们就找国内的,下面给个下载地址。http://npm.taobao.org/mirrors/chromedriver/
进到这个里面,可能看的一脸懵逼,这么多,我下载哪个?
别急,我们先随便点进去一个
你会发现每个里面都会有个 notes.txt 文件,让我们打开这个看看
咦,有发现,这个里面列出了从当前版本,往前,对应的每个版本支持的 chrome 版本情况,这就明朗了,那我找我电脑上谷歌浏览器对应的版本就好了,这就又有一个问题,我电脑上的谷歌是什么版本?
打开谷歌浏览器
一般是红框的位置,就是地址栏最后面,点击下,然后点击“帮助”-->“关于 Google Chrome”,然后你就能看到你的谷歌浏览器版本了
然后去刚才的列表里找,其实,找最新的一个文件夹即可,因为最新的那个文件夹里的 notes.txt 会把以往的支持情况都罗列出来,然后在找对应的版本就好了。到我写这篇为止,最新的是 2.46
然后看到,72 正好在 2.46 的支持范围,由于我们是 windows,下载 win32 那个版本的就行,然后解压,会看到对应的 chromedriver.exe 文件
下载下来之后,有两种方法解决上面的问题:
-
一种是很普遍的一种,配置环境变量,可以将下载下来的 chromedriver 放到现有的环境变量的目录下,比如:我们已经配置过了 python,那就可以放到 python 的安装目录下;也可以随便弄个目录,把 exe 放进去之后,将这个目录配置到环境变量里
-
另外一种,也是我们以后采用的一种方法,自己在当前项目建个目录,然后把 chromedriver 放进去,之后启动 chrome 的指定这个路径即可
然后衍生出了如下代码
from selenium import webdriver
driver = webdriver.Chrome(executable_path="G:/codedir/python/webAutoFrame/drivers/chromedriver.exe") # 这里发现我启动chrome的时候加了个参数,executable_path,这个就是指定启动的chromedirver路径,因为之后我们可能因为浏览器不同而切换driver,每次都配置环境变量显然太麻烦
driver.get("http://www.baidu.com") #打开百度的网址,简单来说就是地址栏里输入了百度的网址
driver.find_element_by_id("kw").send_keys("第一个脚本") #通过id定位到输入框,输入“第一个脚本”
driver.find_element_by_id("su").click() #通过id定位到搜索按钮,点击搜索按钮
driver.quit() # 退出
# 这里先大概有个概念,其实看着英文,大概已经知道的每步的含义,还是比较直观的
然后再运行,不容易啊,成功打开了浏览器,打开了百度,输入了“第一个脚本”,然后点击搜索,退出浏览器,完美!
后记
没有把 pycharm 的安装单独提出来,是感觉应该没啥难度,也没说咋新建项目,相信用过 IDE 的,基本都知道,没用过的,相信大家的 IQ。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于