前言
最近在用码云的pages来做静态页面的服务器。发现每次修改内容后都要去仓库点一下更新才能将修改内容同步到网页。实在是麻烦。当然码云的pages有会员服务可以自动同步更新,但作为一个白嫖党,这辈子都不可能花钱买会员的。
目标
在本地修改内容后,在gitbash中输入refresh命令即可将修改内容同步到网页。
实现思路
使用python的webdriver自动化pages更新流程。
使用shell脚本自动提交修改,并调用python脚本。
使用alias设置执行shell脚本的别名。
代码实现
更新Pages的python脚本
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as Wait
print("start refresh gitee pages...")
repo_user_name = "xxxx"
repo_name = "xxxx"
login_user = "xxxx"
login_pwd = "xxxx"
url = "https://gitee.com/"+repo_user_name+"/"+repo_name+"/pages"
driver = "D:/chromedriver.exe"
chrome_options = Options()
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--headless")
browser=webdriver.Chrome(executable_path=driver, options=chrome_options)
browser.get(url)
Wait(browser, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "item.git-nav-user__login-item")))
print("load finish. url=" + url)
login_btn = browser.find_element_by_class_name("item.git-nav-user__login-item")
login_btn.click()
Wait(browser, 10).until(EC.presence_of_element_located((By.ID, "user_login")))
Wait(browser, 10).until(EC.presence_of_element_located((By.ID, "user_password")))
print("login page load finish.")
user_input = browser.find_element_by_id("user_login")
pwd_input = browser.find_element_by_id("user_password")
login_btn = browser.find_element_by_name("commit")
user_input.send_keys(login_user)
pwd_input.send_keys(login_pwd)
login_btn.click()
Wait(browser, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "button.orange.redeploy-button.ui.update_deploy")))
print("login finish.")
deploy_btn = browser.find_element_by_class_name('button.orange.redeploy-button.ui.update_deploy')
browser.execute_script("window.scrollTo(100, document.body.scrollHeight);")
deploy_btn.click()
dialog = browser.switch_to.alert
dialog.accept()
print("refresh gitee pages finish.")
browser.close()
提交更新的shell脚本
git add .
git commit -m '.'
git push origin master
/d/PythonCode/venv/Scripts/python.exe /d/PythonCode/refresh_gitee_page.py
设置执行shell脚本的别名
alias refresh='sh refresh.sh'
最后
没有玩过webdriver的同学可以看看这篇文章,讲的很详细。
https://www.cnblogs.com/wulixia/p/11200023.html
网友评论