前言
最近在用碼云的pages來(lái)做靜態(tài)頁(yè)面的服務(wù)器。發(fā)現(xiàn)每次修改內(nèi)容后都要去倉(cāng)庫(kù)點(diǎn)一下更新才能將修改內(nèi)容同步到網(wǎng)頁(yè)。實(shí)在是麻煩。當(dāng)然碼云的pages有會(huì)員服務(wù)可以自動(dòng)同步更新,但作為一個(gè)白嫖黨,這輩子都不可能花錢(qián)買(mǎi)會(huì)員的。
目標(biāo)
在本地修改內(nèi)容后,在gitbash中輸入refresh命令即可將修改內(nèi)容同步到網(wǎng)頁(yè)。
實(shí)現(xiàn)思路
使用python的webdriver自動(dòng)化pages更新流程。
使用shell腳本自動(dòng)提交修改,并調(diào)用python腳本。
使用alias設(shè)置執(zhí)行shell腳本的別名。
代碼實(shí)現(xiàn)
更新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
設(shè)置執(zhí)行shell腳本的別名
alias refresh='sh refresh.sh'
最后
沒(méi)有玩過(guò)webdriver的同學(xué)可以看看這篇文章,講的很詳細(xì)。
https://www.cnblogs.com/wulixia/p/11200023.html