国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了Python3+Selenium+Chrome實(shí)現(xiàn)自動(dòng)填寫WPS表單。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

引言

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

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

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

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

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

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

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

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

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

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

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

編寫代碼

??這個(gè)是測試用的WPS表單。

Python3+Selenium+Chrome實(shí)現(xiàn)自動(dòng)填寫WPS表單,selenium,python,軟件測試,程序員,接口測試,自動(dòng)化測試,測試工程師

?如上圖,我們先分析一下這個(gè)表單:

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

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

1

2

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個(gè)問題,用法同上;'!'也要修改為N-1,表示第N個(gè)選項(xiàng),比如問題2要選中第1個(gè)選項(xiàng)的話,select_label_wrap_?_!應(yīng)改為select_label_wrap_1_0;要選中第2個(gè)選項(xiàng)的話,select_label_wrap_?_!應(yīng)改為select_label_wrap_1_1。

1

2

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

answer.click()

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

1

2

3

4

5

6

7

8

9

10

11

12

localtime = time.localtime(time.time())

if localtime.tm_hour < 7:

????t = 0

????print("填寫時(shí)間為:0700-0900")

elif localtime.tm_hour < 11:

????t = 1

????print("填寫時(shí)間為:1100-1200")

else:

????t = 2

????print("填寫時(shí)間為: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組件只能針對(duì)性的編寫代碼,好在一般表單只有一個(gè)日期PICKER控件。我們用如下代碼操作這種組件。這個(gè)不需要修改,但是如果有兩個(gè)日期PICKER控件,還要視情況修改,應(yīng)該沒有這么變態(tài)的表單。

1

2

3

4

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)行自動(dòng)填寫,運(yùn)行后會(huì)彈出Chrome瀏覽器窗口,打開對(duì)應(yīng)WPS表單網(wǎng)頁,自動(dòng)填入內(nèi)容,等待10s秒(方便檢查或者反悔,反悔的話關(guān)閉網(wǎng)頁即可)后,自動(dòng)確認(rèn)完成填寫,最后命令行輸出Perfect!(只有命令行輸出Perfect!或者網(wǎng)頁顯示表單填寫成功才表示自動(dòng)填寫成功)。

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

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

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/'

# 完成瀏覽器對(duì)象的初始化,設(shè)定超時(shí)時(shí)間為10秒。

browser = webdriver.Chrome()

wait = WebDriverWait(browser, 10)

browser.get(url)

################################

# 針對(duì)INPUT組件,XXX替換成自己的內(nèi)容。

answer = wait.until(EC.element_to_be_clickable((By.ID, 'input_0')))

answer.send_keys('XXX')

# 針對(duì)LABEL組件。

answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_1_0')))

answer.click()

# 針對(duì)INPUT組件,XXX替換成自己的內(nèi)容。

answer = wait.until(EC.element_to_be_clickable((By.ID, 'input_2')))

answer.send_keys('18')

# 針對(duì)LABEL組件。

answer = wait.until(EC.element_to_be_clickable((By.ID, 'select_label_wrap_3_0')))

answer.click()

# 針對(duì)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()

# 針對(duì)詢問時(shí)間的INPUT組件。

localtime = time.localtime(time.time())

if localtime.tm_hour < 7:

????t = 0

????print("填寫時(shí)間為:0700-0900")

elif localtime.tm_hour < 11:

????t = 1

????print("填寫時(shí)間為:1100-1200")

else:

????t = 2

????print("填寫時(shí)間為: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個(gè)#之間的內(nèi)容即可。

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

1

2

3

4

5

6

# 點(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()

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

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

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

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("填寫時(shí)間為:0700-0900")

elif localtime.tm_hour < 11:

????t = 1

????print("填寫時(shí)間為:1100-1200")

else:

????t = 2

????print("填寫時(shí)間為: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!')

?現(xiàn)在我也找了很多測試的朋友,做了一個(gè)分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時(shí)找不到資源,沒人解答問題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動(dòng)化,性能,安全,測試開發(fā)等等方面有一定建樹的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會(huì)分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開源的?。。?qq群號(hào):485187702【暗號(hào):csdn11】

最后感謝每一個(gè)認(rèn)真閱讀我文章的人,看著粉絲一路的上漲和關(guān)注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走!?希望能幫助到你!【100%無套路免費(fèi)領(lǐng)取】

Python3+Selenium+Chrome實(shí)現(xiàn)自動(dòng)填寫WPS表單,selenium,python,軟件測試,程序員,接口測試,自動(dòng)化測試,測試工程師

Python3+Selenium+Chrome實(shí)現(xiàn)自動(dòng)填寫WPS表單,selenium,python,軟件測試,程序員,接口測試,自動(dòng)化測試,測試工程師文章來源地址http://www.zghlxwxcb.cn/news/detail-789552.html

到了這里,關(guān)于Python3+Selenium+Chrome實(shí)現(xiàn)自動(dòng)填寫WPS表單的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包