更换博客后我用selenium释放了我的手

为什么要做这个东西

当然解放我的手…(懒)

最近一段时间我把我博客从原来的 WordPress 上迁移到 GitHub page 上了,然后写完一篇文章发布之后,我发现我都要每次从当前 github>setting 中重新填入我的域名 (wusiqing.com),才能让我的域名重新生效。

那怎么办?

思路以及遇到的问题

这下子可以用上 python 的一个自动化测试框架 selenium 来解决一下,实现自动化。

现在思路是:

    1. 脚本需要在我放置博客的 GitHub Page 中找到设置的网址
    1. 脚本需要登录我的Github账号(我这里是直接跳到设置网址,你们也可以直接在个人主页登录)
    1. 脚本需要在需要填入域名的输入框里直接填上我的域名,并且保存好我的域名使它生效

有几个问题:

    1. 脚本跳转到GitHub Page 中设置的网址的时候,由于被 Github 检查到是自动化测试软件,需要重新登录
      如图:
    1. 需要等到页面加载出输入框和登录按钮时,才可以触发对应程序;
    1. 设置页面需要等待输入域名才可以点击按钮;

解决

    1. 解决方法:等待页面加载完,设置好登录名和密码,自动点击登录按钮,实现登录;
    1. 解决方法:我对页面设置了 selenium 隐形等待页面加载完。
      相关代码: driver.implicitly_wait(10) 意思是循环查找查找页面10次,知道查到相对应元素再退出循环。
    1. 解决方法: 我对页面设置了显性等待代码,等待查到相对应元素,并且输入框已填入相对应的字段时才会触发:
      相关代码: wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'js-pages-cname-save-btn')))
      当然你需要安装和引入相关的python的库

基本操作步骤

  1. 确保你的电脑上有 python ,如果没有,自行谷歌百度下载到本地,mac电脑的好处就是本身就自带 python
  2. 安装 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环境一样。
  1. 下载selenium
    在命令行中运行: pip install selenium

  2. 根据你的浏览器版本下载相对应的 浏览器驱动 版本。我选择是 Chrome 浏览器,它版本是70.多的,然后直接选择了相对应的浏览器驱动.
    这个是浏览器驱动下载地址(chrome的浏览器驱动列表)[http://chromedriver.storage.googleapis.com/index.html

    以下是一张对应的表格(Chrome)

  3. 开始编写相对应代码:

    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