为什么要做这个东西
最近一段时间我把我博客从原来的 WordPress 上迁移到 GitHub page 上了,然后写完一篇文章发布之后,我发现我都要每次从当前 github>setting
中重新填入我的域名 (wusiqing.com),才能让我的域名重新生效。
那怎么办?
思路以及遇到的问题
这下子可以用上 python 的一个自动化测试框架 selenium
来解决一下,实现自动化。
现在思路是:
- 脚本需要在我放置博客的 GitHub Page 中找到设置的网址
- 脚本需要登录我的Github账号(我这里是直接跳到设置网址,你们也可以直接在个人主页登录)
- 脚本需要在需要填入域名的输入框里直接填上我的域名,并且保存好我的域名使它生效
有几个问题:
- 脚本跳转到GitHub Page 中设置的网址的时候,由于被 Github 检查到是自动化测试软件,需要重新登录
如图:
- 脚本跳转到GitHub Page 中设置的网址的时候,由于被 Github 检查到是自动化测试软件,需要重新登录
- 需要等到页面加载出输入框和登录按钮时,才可以触发对应程序;
- 设置页面需要等待输入域名才可以点击按钮;
解决
- 解决方法:等待页面加载完,设置好登录名和密码,自动点击登录按钮,实现登录;
- 解决方法:我对页面设置了
selenium
隐形等待页面加载完。
相关代码:driver.implicitly_wait(10)
意思是循环查找查找页面10次,知道查到相对应元素再退出循环。
- 解决方法:我对页面设置了
- 解决方法: 我对页面设置了显性等待代码,等待查到相对应元素,并且输入框已填入相对应的字段时才会触发:
相关代码:wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'js-pages-cname-save-btn')))
当然你需要安装和引入相关的python的库
- 解决方法: 我对页面设置了显性等待代码,等待查到相对应元素,并且输入框已填入相对应的字段时才会触发:
基本操作步骤
- 确保你的电脑上有
python
,如果没有,自行谷歌百度下载到本地,mac电脑的好处就是本身就自带python
- 安装 pyhton 的包管理器
pip
/easy_install
,好的是 mac电脑本身也附带了easy_install
这个包管理器;具体步骤看下图
mac安装 pip
- 命令行运行:
easy_install pip
window安装 pip 略复杂
- 第一步,下载pip压缩包:
https://pypi.python.org/pypi/pip#downloads - 第二步,解压压缩包,并在命令行中运行
setup.py
文件
使用命令:python setup.py install
- 第三步,配置环境变量,与安装python环境一样。
下载
selenium
在命令行中运行:pip install selenium
根据你的浏览器版本下载相对应的
浏览器驱动
版本。我选择是Chrome
浏览器,它版本是70.多的,然后直接选择了相对应的浏览器驱动.
这个是浏览器驱动下载地址(chrome的浏览器驱动列表)[http://chromedriver.storage.googleapis.com/index.html以下是一张对应的表格(Chrome)
开始编写相对应代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome('./chromedriver')
driver.get('https://github.com/heycqing/blog/settings')
driver.implicitly_wait(10)
user = driver.find_element_by_xpath("//input[@id='login_field']")
pwd = driver.find_element_by_xpath("//input[@id='password']")
click_ = driver.find_element_by_xpath("//input[@type='submit']")
user.send_keys('你的GitHub账号')
pwd.send_keys('你的Github账号密码)
click_.click()
wait = WebDriverWait(driver, 10)
host_ =driver.find_element_by_xpath("//input[@id='pages-cname-field']")
host_.send_keys('你的域名')
save_ = wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'js-pages-cname-save-btn')))
save_.click()
driver.quit()
结果
执行结果,图示如下:
结语
好了,一个简单的Python自动化小程序搞好了,然后我需要把它加入我的 bash_proflie
中来实现一键发布部署好我的博客啦!
如何实现一键:可以参考一下我这篇文章LOG(文末有彩蛋)
还有一个实现自动登录学校教务系统的demo放在我的github上:zhbitFixBug