自动化脚本以及如何打包成可执行程序
1、自动化脚本2、前置工作准备2.1、 selenium模块2.2、浏览器驱动2.2.1、版本选择:3、开始3.1、打开页面3.2、操作页面需求分析:页面元素定位(会的跳过)代码片段解释:完整代码:4、打包4.1、打包工具4.2、用法1、自动化脚本
自动化脚本,就是能够自己执行的一个脚本。比如你想做一个事情,但是又没有时间或者精力去做,那就可以脚本自动化脚本来帮你去完成,而自己也能腾出时间做其他事情。
一般的操作呢,就是操作一些网页什么的。今天自己也是捣鼓的这点东西。
2、前置工作准备
2.1、 selenium模块
一个Python的第三方库
安装:
pip install selenium
PyCharm中安装
就在file—>setting中操作
直接上图
2.2、浏览器驱动
selenium可以操作的浏览器驱动比较多,用的是chrome的浏览器驱动
下载地址:/mirrors/chromedriver/
2.2.1、版本选择:
先看一下自己电脑中安装的chrome浏览器的版本然后就着对应的版本,如果版本号没有严格对应的,那就找最近的,最接近浏览器版本的。
我这里浏览器版本是83.0.4103.116
我选择的驱动版本是83.0.4103.39
,版本能最近就最近,
但是注意版本不要过高,可能这个驱动不是正式用的
点进去之后去下载
选择对应的操作系统,不用管电脑位数。
下载完之后,将文件解压之后,里面有个chromedriver.exe
,待会要用的就是这个驱动
3、开始
3.1、打开页面
# 第一步,加载selenium包中的webdriverfrom selenium import webdriver# 第二步,加载驱动。这里使用的是chrome驱动# 在这里之前,就要刚刚的chormedriver.exe驱动文件了。# 把驱动文件复制到当前代码文件所在的文件夹内driver = webdriver.Chrome('chromedriver.exe')# 既然要操作一个页面,那么我们就需要打开一个网站# 这里以百度为例driver.get('')
以上代码就不多说了,基本都是这个步骤,没什么好解释的,简单的说明都在代码注释中。
截图看效果:
3.2、操作页面
现在我们已经打开了一个页面,如果仅仅是这样,那就毫无意义。我们要的是能够操作这个页面,能够对这个页面进行操作或者拿到我们想要的一些东西
需求
继续示例,我们现在想要进行的操作是:登录操作。
那么我们就需要输入账号和密码到页面。
怎么做呢?
分析:
看页面,我们发现,当前页面并不是登录页面,怎么办?
找,找到登录入口,发现右上角有个登录。
找到登录入口,我们需要的操作就是要点击这个登录,进入登录页面。
页面元素定位(会的跳过)
1、首先,可以通过这种方式打开开发者模式:
或者通过快捷键F12打开,打开之后如下图,我的在右边,默认是在下边的
2、元素定位
第一种方式:
点击上方的箭头(变色),然后在页面上点击想要查看的元素,会发现右边的页面直接就定位到这个元素。是一个a标签。
第二种方式:
通过查找,在开发者工具打开后,按Ctrl+F在开发者工具中查找,比如这里查找登录,能够看到也能够快速找到包含登录的元素
这个时候,鼠标放到这个a标签上,看看是不是你要找的这个元素(因为可能搜索的结果不是一个,确认一下)
3、获取元素的代码定位方式
通过这种方式,看到copy有很多,这个都是复制当前元素在这个文档的位置,在代码中就通过这个东西来定位我们要操作的元素
熟悉了这些,来看代码
代码片段解释:
打开登录界面
# 找到登录入口的按钮,点击进入打开页面# driver.find_element_by_id()# driver.find_element_by_tag_name()# driver.find_element_by_class_name()# driver.find_element_by_xpath()# driver.find_element_by_css_selector()# driver.find_element_by_name()# driver.find_element_by_link_text()# 以上的所有方法都有对应的查找多个元素的方法# 如:driver.find_elements_by_link_text()# 比如根据一个条件能个查找多个结果# 以上是python中寻找页面上元素的方式,# 这些函数返回的结果都是WebDriver或者WebDriver列表# 这里用的是连接文本来查找# driver.find_element_by_link_text('登录')# xpath,页面上copy XPathloginEle = driver.find_element_by_xpath('//*[@id="u1"]/a[2]')# 查找方式很多,不多说了# 按照之前的分析,要点击这个按钮来进入登录页面loginEle.click()# 以上两行代码,就可以进入登录页面
用户名登录。跟上面的一样了,就不多解释
# 进入登录页面,发现需要点击用户名登录# 这里用id来查找,是最精确的一种查找方式loginByAccount = driver.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn')loginByAccount.click()# 到这,我们就可以输入账户和密码了
输入帐号密码:
一样,我们需要找到对应的操作元素。
# 用户名输入框userNameInput = driver.find_element_by_id('TANGRAM__PSP_11__userName')# 密码输入框passwordInput = driver.find_element_by_id('TANGRAM__PSP_11__password')# 输入信息,通过send_keys()userNameInput.send_keys('1234567890')passwordInput.send_keys('kdskdshfslda')# 登录按钮loginBtn = driver.find_element_by_id('TANGRAM__PSP_11__submit')loginBtn.click()# 到此,最基本的操作完成。# 当然,后面还有很多难关,# 现在的验证码这一块就需要很多难点,# 目前的只是很基础的操作,以后慢慢研究
完整代码:
# 第一步,加载selenium包中的webdriverfrom selenium import webdriverimport time# 第二步,加载驱动。这里使用的是chrome驱动# 在这里之前,就要刚刚的chormedriver.exe驱动文件了。# 把驱动文件复制到当前代码文件所在的文件夹内driver = webdriver.Chrome('chromedriver.exe')# 既然要操作一个页面,那么我们就需要打开一个网站# 这里以百度为例`driver.get('')# 找到登录入口的按钮,点击进入打开页面# driver.find_element_by_id()# driver.find_element_by_tag_name()# driver.find_element_by_class_name()# driver.find_element_by_xpath()# driver.find_element_by_css_selector()# driver.find_element_by_name()# driver.find_element_by_link_text()# 以上的所有方法都有对应的查找多个元素的方法# 如:driver.find_elements_by_link_text()# 比如根据一个条件能个查找多个结果# 以上是python中寻找页面上元素的方式,# 这些函数返回的结果都是WebDriver或者WebDriver列表# 这里用的是连接文本来查找# driver.find_element_by_link_text('登录')# xpath,页面上copy XPathloginEle = driver.find_element_by_xpath('//*[@id="u1"]/a[2]')# 查找方式很多,不多说了# 按照之前的分析,要点击这个按钮来进入登录页面loginEle.click()# 以上,就可以进入登录页面# 在测试的时候,会发现,如果登录页面没有打开,是找不到下面的元素的# 所以在这里我们让程序等待3秒之后,等登录界面打开之后再去找里面的元素time.sleep(3)# 进入登录页面,发现需要点击用户名登录# 这里用id来查找,是最精确的一种查找方式loginByAccount = driver.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn')loginByAccount.click()# 到这,我们就可以输入账户和密码了# 用户名输入框userNameInput = driver.find_element_by_id('TANGRAM__PSP_11__userName')# 密码输入框passwordInput = driver.find_element_by_id('TANGRAM__PSP_11__password')# 输入信息,通过send_keys()userNameInput.send_keys('1234567890')passwordInput.send_keys('kdskdshfslda')# 登录按钮loginBtn = driver.find_element_by_id('TANGRAM__PSP_11__submit')loginBtn.click()# 到此,最基本的操作完成。# 当然,后面还有很多难关,# 现在的验证码这一块就需要很多难点,# 目前的只是很基础的操作,以后慢慢研究
4、打包
我们在写好自己的下脚本之后,但是发现只能在编辑器中进行运行。
这样肯定是不行的,我们不可能换一台电脑,还要装一遍环境和工具来运行吧。
那现在就说说python打包
4.1、打包工具
今天,哦,现在说昨天,在网上找了很多方法,通过代码打包没有成功。
这里借助工具pyinstaller来进行打包
安装这个包,应该不需要多说了,两种方式,跟文章开头一样
pip install pyinstaller
或者PyCharm工具中安装
4.2、用法
参数说明: