背景:需要批量上傳門店的logo速挑,頁面不是按照input的file類型寫的。
- 借助window的工具Autoit 捕捉windows的元素
- scite寫腳本
- compile script to(.exe)將腳本文件轉(zhuǎn)換成windows系統(tǒng)可執(zhí)行的exe文件
- 用pandas處理excle文件獲取所有的門店
image.png
Autoit 下載地址:
https://www.autoitscript.com/site/autoit/downloads/
image.png
下載上面兩個文件,下載成功,直接下一步下一步安裝即可
打開Autoit 捕捉元素
image.png
點(diǎn)擊頁面上傳logo
image.png
將Autoit 藍(lán)色放光拖動到圖片所在路徑中圖示的地方,捕捉到 標(biāo)紅的一些元素,后續(xù)使用
image.png
image.png
打開sciTE 編寫腳本:
image.png
要想 顯示編輯中文 ,有幾個地方設(shè)置一下:
運(yùn)行SciTE陨献,點(diǎn)Option->Open User Options File,增加兩行:
code.page=65001
output.code.page=65001
這是使用UTF-8編碼懂更,或者如果你使用GBK眨业、GB2312(Windows下一般都是),那就是:
code.page=936
output.code.page=936
然后保存(File->Save)沮协。如果臨時需要用UTF-8龄捡,點(diǎn)File->Encoding->UTF-8
image.png
ControlFocus("打開","","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("打開","","Edit1","C:\Users\user\Desktop\ltsk.png")
Sleep(3000)
ControlClick("打開","","Button1")
Sleep(2000)
打開compile script to(.exe)將腳本文件轉(zhuǎn)換成windows系統(tǒng)可執(zhí)行的exe文件,注意路徑
image.png
image.png
所有門店在excle的store的sheet中慷暂,供后續(xù)使用
image.png
python文件代碼如下
from time import sleep
from selenium import webdriver
from xxx.login import login_shop
import os
import pandas as pd
from xxx.get_excle_path import get_excle_path
# 門店logo
def logo(base_url,driver):
# 取項(xiàng)目路徑對應(yīng)excle的store表格
excle_file = get_excle_path()
sheet_name = 'store'
df = pd.DataFrame(pd.read_excel(excle_file, sheet_name=sheet_name))
# 數(shù)據(jù)量小的情況下直接獲取所有門店列表數(shù)據(jù) 數(shù)據(jù)量大的時候用迭代器
store_no = df['store_no']
# 循環(huán)執(zhí)行需要上傳logo的門店 每個門店的鏈接不一樣帶有門店名字
for i in range(1,10):
url_path = '/ssssss?ccc=%s' % store_no[i]
driver.get(base_url + url_path)
sleep(1)
# 點(diǎn)擊上傳圖片
driver.find_element_by_css_selector(".form-group:nth-child(1) .ant-upload-text").click()
sleep(1)
# 執(zhí)行上傳圖片的操作
os.system(r"C:\Users\user\Desktop\logo.exe")
# input file 類型的適用下面這種
# driver.find_element_by_id("logo-file").send_keys(r'C:\Users\user\Desktop\ltsk.png')
sleep(5)
# 保存
driver.find_element_by_id('saveBtn').click()
sleep(4)
# 確定
driver.find_element_by_css_selector('.confirm:nth-child(1)').click()
if __name__ == "__main__":
base_url = "http://xxx.xxx.com"
userName = "xxxxxx"
passWord = "xxxxxx"
driver = webdriver.Chrome()
login_shop(driver, base_url, userName, passWord)
driver.get(base_url + "/index")
sleep(1)
logo(base_url,driver)
print("上傳logo成功聘殖!")
至此,就可以批量上傳所有門店logo了