python+selenium 系列 ---03 第一个自动化脚本

本贴最后更新于 2060 天前,其中的信息可能已经时移世改

前言

经过上面两篇的讲解,环境应该已经装好了,下面终于要开始最激动人心的码代码的环节,这个系列目的就是由简入繁,慢慢搭建起来一个 UI 自动化的环境,这边还属于“简”的部分,如果有 python 基础,相信这篇看起来没啥难度,如果没有基础,基本代码也是会做注释的,问题应该也不大。

编辑器的选择

说明

市面上编辑器太多了,用基本都能用,就是用记事本也可以,但是一款好的编辑器,能大大提升编写效率,这里还是比较推荐 pycharm 的,用的几款里面,这个还是排得上号的,其他的,诸如:eclipse,atom,vs code 装上插件,也没问题,不过这个系列还是以 pycharm 作为 IDE,明白原理就好,换成其他的也没啥问题。

当然,这个 IDE 的专业版是收费的,社区版当然已经能满足日常大部分需要了,如果想用专业版,百度一下你就知道,我这里当然支持大家选择正版,支持正版。

IDE 安装

这里就给个下载地址,安装过程就不说了,下一步即可,如果有问题,可以留言。

下载地址:https://www.jetbrains.com/pycharm/

一些使用说明

  1. 建议打开 toolbar

1554204815742.png

  1. python 环境的配置

1554204884522.png

如果你这个地方是空的,后面有个小齿轮一样的按钮,点击之后,选择 Add,如下图:

1554204921564.png

之后会出现如下页面

1554204989366.png

这个页面为啥没标红框,因为这个纯属看个人喜好了,如果想环境之间隔离,就选默认的“New environment”,这个会自动创建个虚拟环境,跟本地的 python 环境是隔离的。左边还有很多选项可以选择,有兴趣的可以百度看下,其实看名字也差不多能知道个大概了。由于我没有这方面需要,我的选择如下图:

1554206324063.png

然后确定即可,然后可以看到下图:

1554206395611.png

这个红框标识出来的就是当前 python 环境对应的第三方库的安装情况,pip,setuptools 是自带的,上回我们装了 selenium,urllib3 是 selenium 的依赖,这里都显示了。然后点击右下角的 OK

1554206426968.png

然后你会发现这边变成了 python3.7,这就 ok 了,如果你本地有多个版本的 python,都可以按照上述步骤添加,必要的时候随意切换。

  1. 设置模板

    这个是干嘛用的了,有时候你会发现,看的一些源码,每个文件之前会标注一些信息,比如,作者,文件名,创建时间,修改时间等,这个模板的作用就是让你在创建文件的时候,这些信息自动填写,不用每次都输入了。

1554205706203.png

还是这个扳手一样的“设置”按钮,出现设置界面后,左上角的搜索框,搜索“File and Code Template”

1554205821218.png

由于我们只需要 python 的文件模板,所以设置 python script 即可,如果有其他需要,也可以设置其他格式的文件模板。照着下面这张图配置即可:

1554205886282.png

最后记得点 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/

进到这个里面,可能看的一脸懵逼,这么多,我下载哪个?

1554207072595.png

别急,我们先随便点进去一个

1554207110265.png

你会发现每个里面都会有个 notes.txt 文件,让我们打开这个看看

1554207248259.png

咦,有发现,这个里面列出了从当前版本,往前,对应的每个版本支持的 chrome 版本情况,这就明朗了,那我找我电脑上谷歌浏览器对应的版本就好了,这就又有一个问题,我电脑上的谷歌是什么版本?

打开谷歌浏览器

1554207385834.png

一般是红框的位置,就是地址栏最后面,点击下,然后点击“帮助”-->“关于 Google Chrome”,然后你就能看到你的谷歌浏览器版本了

1554207476315.png

然后去刚才的列表里找,其实,找最新的一个文件夹即可,因为最新的那个文件夹里的 notes.txt 会把以往的支持情况都罗列出来,然后在找对应的版本就好了。到我写这篇为止,最新的是 2.46

1554207586357.png

然后看到,72 正好在 2.46 的支持范围,由于我们是 windows,下载 win32 那个版本的就行,然后解压,会看到对应的 chromedriver.exe 文件

下载下来之后,有两种方法解决上面的问题:

  • 一种是很普遍的一种,配置环境变量,可以将下载下来的 chromedriver 放到现有的环境变量的目录下,比如:我们已经配置过了 python,那就可以放到 python 的安装目录下;也可以随便弄个目录,把 exe 放进去之后,将这个目录配置到环境变量里

  • 另外一种,也是我们以后采用的一种方法,自己在当前项目建个目录,然后把 chromedriver 放进去,之后启动 chrome 的指定这个路径即可

1554208213977.png

然后衍生出了如下代码

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。

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    543 引用 • 672 回帖
  • 自动化测试
    20 引用 • 30 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    感谢作者的自动化分享,后期可以分享分享 Python 接口自动化和页面自动化的相关内容