最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3+Selenium+Chrome實(shí)現(xiàn)自動填寫WPS表單

 更新時間:2020年02月12日 11:18:28   作者:盧喵貓  
本文通過python3、第三方python庫Selenium和谷歌瀏覽器Chrome,完成WPS表單的自動填寫,通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下

引言

  本文通過python3、第三方python庫Selenium和谷歌瀏覽器Chrome,完成WPS表單的自動填寫。

開發(fā)環(huán)境配置

  python3的安裝:略,網(wǎng)上都有教程。

  Selenium的安裝:在命令行輸入pip3 install selenium并回車即可完成安裝,如果不成功,查找網(wǎng)上教程。

  Chrome的安裝:略,網(wǎng)上都有教程。

  因?yàn)镾elenium需要ChromeDriver來驅(qū)動Chrome,所以還需要下載驅(qū)動ChromeDriver。下面重點(diǎn)介紹一下ChromeDriver的安裝(如不太清楚,查找網(wǎng)上教程):

  1.確定谷歌瀏覽器的版本號:首先打開谷歌瀏覽器,點(diǎn)擊右上角豎著的三個點(diǎn)—幫助—關(guān)于Google Chrome,可以看到谷歌瀏覽器的版本號。

  2.下載ChromeDriver:從ChromeDriver鏡像站里找到谷歌瀏覽器版本號對應(yīng)的文件夾并打開,從中找到對應(yīng)的系統(tǒng)后下載。 

 3.配置:將壓縮包解壓后得到可執(zhí)行文件,將其配置到環(huán)境變量Path下,Windows可以直接放到Python的Scripts目錄下(因?yàn)樵撃夸浺话愣荚诃h(huán)境變量里)。

  4.驗(yàn)證:在命令行輸入chromeDriver并回車,如果不報錯,即完成安裝。   也可以采用火狐瀏覽器(也需要額外下載相應(yīng)驅(qū)動)和PhantomJS瀏覽器引擎(不需要額外下載相應(yīng)驅(qū)動,但是無可視化界面)。

  完成以上步驟即可進(jìn)行代碼編寫。

編寫代碼

  這個是測試用的WPS表單。

測試用的WPS表單

  如上圖,我們先分析一下這個表單:

  這個表單已經(jīng)列舉出大部分WPS表單問題形式:

  1.像問題1和3這種需要輸入文字或者數(shù)字的都屬于INPUT組件。我們用如下代碼操作這種組件。其中?要修改為N-1,表示第N個問題,比如問題1的話,input_?應(yīng)該改為input_0;問題3的話,input_?應(yīng)該改為input_2'XXX'應(yīng)改改為自己的內(nèi)容,即文字或者數(shù)字。

answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_?_!')))
answer.click()

  2.像問題2、4和6(其中問題6后面再說)這種不需要輸入只需要一次選擇的都屬于LABEL組件(本來應(yīng)該是單選和多選組件,但是WPS表單是用Label組件實(shí)現(xiàn)的)。我們用如下代碼操作這種組件。其中?要修改為N-1,表示第N個問題,用法同上;'!'也要修改為N-1,表示第N個選項(xiàng),比如問題2要選中第1個選項(xiàng)的話,select_label_wrap_?_!應(yīng)改為select_label_wrap_1_0;要選中第2個選項(xiàng)的話,select_label_wrap_?_!應(yīng)改為select_label_wrap_1_1。

answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_?_!')))
answer.click()

  對于問題6,雖然其組件也屬于LABEL組件,但涉及到填寫時間,所以利用time庫來獲取當(dāng)前時間,與選項(xiàng)作比較后賦值給t,從而選中第t+1個選項(xiàng)。其中?要修改為N-1,表示第N個問題,用法同上。

localtime = time.localtime(time.time())
if localtime.tm_hour < 7:
	t = 0
	print("填寫時間為:0700-0900")
elif localtime.tm_hour < 11:
	t = 1
	print("填寫時間為:1100-1200")
else:
	t = 2
	print("填寫時間為:1800-2000")
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_?_' + str(t))))
answer.click()

  3.像問題5這種需要多次點(diǎn)擊選擇的都屬于PICKER組件。這種PICKER組件只能針對性的編寫代碼,好在一般表單只有一個日期PICKER控件。我們用如下代碼操作這種組件。這個不需要修改,但是如果有兩個日期PICKER控件,還要視情況修改,應(yīng)該沒有這么變態(tài)的表單。

answer = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.ant-calendar-picker')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.ant-calendar-today-btn')))
answer.click()

  因此,圖示表單應(yīng)該用以下代碼進(jìn)行自動填寫,運(yùn)行后會彈出Chrome瀏覽器窗口,打開對應(yīng)WPS表單網(wǎng)頁,自動填入內(nèi)容,等待10s秒(方便檢查或者反悔,反悔的話關(guān)閉網(wǎng)頁即可)后,自動確認(rèn)完成填寫,最后命令行輸出Perfect!(只有命令行輸出Perfect!或者網(wǎng)頁顯示表單填寫成功才表示自動填寫成功)。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# WPS表單的網(wǎng)址
url = 'https://f.wps.cn/form-write/uwDUPB2N/'
# 完成瀏覽器對象的初始化,設(shè)定超時時間為10秒。
browser = webdriver.Chrome()
wait = WebDriverWait(browser, 10)
browser.get(url)

################################
# 針對INPUT組件,XXX替換成自己的內(nèi)容。
answer = wait.until(EC.element_to_be_clickable((By.ID, 'input_0')))
answer.send_keys('XXX')
# 針對LABEL組件。
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_1_0')))
answer.click()
# 針對INPUT組件,XXX替換成自己的內(nèi)容。
answer = wait.until(EC.element_to_be_clickable((By.ID, 'input_2')))
answer.send_keys('18')
# 針對LABEL組件。
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_3_0')))
answer.click()
# 針對PICKER組件。
answer = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.ant-calendar-picker')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.ant-calendar-today-btn')))
answer.click()
# 針對詢問時間的INPUT組件。
localtime = time.localtime(time.time())
if localtime.tm_hour < 7:
	t = 0
	print("填寫時間為:0700-0900")
elif localtime.tm_hour < 11:
	t = 1
	print("填寫時間為:1100-1200")
else:
	t = 2
	print("填寫時間為:1800-2000")
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_5_' + str(t))))
answer.click()
################################

# 等待10秒
time.sleep(10)
# 點(diǎn)擊提交
commit = wait.until(EC.element_to_be_clickable((By.ID, 'submit_button')))
commit.click()
# 確認(rèn)提交
yes = wait.until(EC.element_to_be_clickable((By.ID, 'bind_phone_modal_confirm_button')))
yes.click()
# 反饋成功
print('Perfect!')

  類似WPS表單,只需要修改網(wǎng)址url和32個#之間的內(nèi)容即可。

  建議將time.sleep()中的值調(diào)大一些,這樣還可以留出足夠的時間讓自己檢查一下,也可以把以下代碼刪掉,這樣的話,只會自動填寫,不會自動確認(rèn)。

# 點(diǎn)擊提交
commit = wait.until(EC.element_to_be_clickable((By.ID, 'submit_button')))
commit.click()
# 確認(rèn)提交
yes = wait.until(EC.element_to_be_clickable((By.ID, 'bind_phone_modal_confirm_button')))
yes.click()

  這里再給一份針對某表單的代碼,僅供參考學(xué)習(xí)交流,謹(jǐn)記若表單變動,代碼也要變動:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
url = '填入WPS表單的網(wǎng)址'
browser = webdriver.Chrome()
wait = WebDriverWait(browser, 10)
browser.get(url)
answer = wait.until(EC.element_to_be_clickable((By.ID, 'input_0')))
answer.send_keys('XXX')
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_1_1')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_2_0')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_3_0')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.ant-calendar-picker')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.ant-calendar-today-btn')))
answer.click()
localtime = time.localtime(time.time())
if localtime.tm_hour < 7:
	t = 0
	print("填寫時間為:0700-0900")
elif localtime.tm_hour < 11:
	t = 1
	print("填寫時間為:1100-1200")
else:
	t = 2
	print("填寫時間為:1800-2000")
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_5_' + str(t))))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.ID, 'input_6')))
answer.send_keys('36.6')
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_7_0')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_8_0')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_9_0')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_10_1')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_11_0')))
answer.click()
answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_12_0')))
answer.click()
time.sleep(5)
commit = wait.until(EC.element_to_be_clickable((By.ID, 'submit_button')))
commit.click()
yes = wait.until(EC.element_to_be_clickable((By.ID, 'bind_phone_modal_confirm_button')))
yes.click()
print('Perfect!')

總結(jié)

以上所述是小編給大家介紹的Python3+Selenium+Chrome自動填寫WPS表單,希望對大家有所幫助!

尾言

  最后,祝福武漢早日康復(fù),武漢加油!

相關(guān)文章

  • python讀取npy文件數(shù)據(jù)實(shí)例

    python讀取npy文件數(shù)據(jù)實(shí)例

    npy文件用于存儲重建ndarray所需的數(shù)據(jù)、圖形、dtype?和其他信息,下面這篇文章主要給大家介紹了關(guān)于python讀取npy文件數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 如何利用Python保留指定位數(shù)的小數(shù)

    如何利用Python保留指定位數(shù)的小數(shù)

    這篇文章主要給大家介紹了關(guān)于如何利用Python保留指定位數(shù)的小數(shù),,代碼簡單易懂,非常不錯,對大家學(xué)習(xí)或者使用Python具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Android+OpenCv4實(shí)現(xiàn)邊緣檢測及輪廓繪制出圖像最大邊緣

    Android+OpenCv4實(shí)現(xiàn)邊緣檢測及輪廓繪制出圖像最大邊緣

    最近工作需求,需要用opencv來先做一個demo,掃描照片進(jìn)行邊緣檢測和最大邊緣,就整理出來介紹一下,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Python turtle實(shí)現(xiàn)貪吃蛇游戲

    Python turtle實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了Python turtle實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Python字符串的修改方法實(shí)例

    Python字符串的修改方法實(shí)例

    這篇文章主要介紹了Python字符串的修改方法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Python3.5 創(chuàng)建文件的簡單實(shí)例

    Python3.5 創(chuàng)建文件的簡單實(shí)例

    下面小編就為大家分享一篇Python3.5 創(chuàng)建文件的簡單實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 基于Python實(shí)現(xiàn)Excel轉(zhuǎn)Markdown表格

    基于Python實(shí)現(xiàn)Excel轉(zhuǎn)Markdown表格

    Markdown(也簡稱md)作為一種輕量級標(biāo)記語言,因其易寫易讀,效果美觀大方,不僅被眾多網(wǎng)站使用,也是程序員們做筆記、寫文檔的首選。本文將利用Python實(shí)現(xiàn)Excel轉(zhuǎn)Markdown表格,感興趣的可以了解一下
    2022-04-04
  • pycharm配置anaconda環(huán)境時找不到python.exe解決辦法

    pycharm配置anaconda環(huán)境時找不到python.exe解決辦法

    今天來說一下python中一個管理包很好用的工具anaconda,可以輕松實(shí)現(xiàn)python中各種包的管理,這篇文章主要給大家介紹了關(guān)于pycharm配置anaconda環(huán)境時找不到python.exe的解決辦法,需要的朋友可以參考下
    2023-10-10
  • 簡單了解python數(shù)組的基本操作

    簡單了解python數(shù)組的基本操作

    這篇文章主要介紹了簡單了解python數(shù)組的基本操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動尋路

    Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動尋路

    最近在學(xué)習(xí)Python,正好今天在學(xué)習(xí)隨機(jī)數(shù),本文實(shí)現(xiàn)了Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動尋路,感興趣的可以了解一下
    2021-06-06

最新評論

丰镇市| 绥芬河市| 马山县| 德令哈市| 扶沟县| 日土县| 庆云县| 临沂市| 庆城县| 通许县| 阜康市| 昌图县| 竹北市| 会宁县| 娄烦县| 廉江市| 上杭县| 辽中县| 东莞市| 新竹县| 徐水县| 濉溪县| 台前县| 灵丘县| 崇阳县| 天峻县| 恩平市| 景东| 富平县| 新化县| 东城区| 莎车县| 嵩明县| 广灵县| 丹阳市| 仪征市| 新野县| 嘉祥县| 望谟县| 碌曲县| 安仁县|