python+selenium 自動填寫表單並提交
阿新 • • 發佈:2019-01-28
一.為了解決繁瑣、重複的操作步驟,然機器代替人來做
準備:python 3.6 +selenium + chromedriver2.35
ChromeDriver | Chrome |
---|---|
v2.36 | v64-66 |
v2.35 | v63-65 |
v2.34 | v61-63 |
v2.33 | v60-62 |
v2.32 | v59-61 |
v2.31 | v58-60 |
v2.30 | v57-60 |
selenium 安裝 pip install selenium
二.程式碼實現
方式一: 直接呼叫瀏覽器模擬人工操作(視覺化操作)
# encoding=utf8 from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities import time # 前臺開啟瀏覽器模式 def openChrome(): # 加啟動配置 option = webdriver.ChromeOptions() option.add_argument('disable-infobars') # 開啟chrome瀏覽器 driver = webdriver.Chrome(chrome_options=option) return drivers # 授權操作 def operationAuth(driver): url = "http://www.baidu.com" driver.get(url) # 找到輸入框並輸入查詢內容 elem = driver.find_element_by_id("kw") elem.send_keys("selenium") # 提交表單 driver.find_element_by_xpath("//*[@id='su']").click() print('查詢操作完畢!') # 方法主入口 if __name__ == '__main__': # 加啟動配置 driver = openChrome() operationAuth(driver)
方式二: 後臺模擬瀏覽器操作(不顯示瀏覽器,省去瀏覽器啟動的時間)
需要先下載 selenium3.9.1 jar 本地需要java環境(對應的版本為jdk1.8)
啟動seleniumjar 命令 java -jar selenium-server-standalone.jar -port 3456
控制檯檢視是否啟動成功(此方法全部為後臺操作,為了節省操作時間而不會真的呼叫瀏覽器進行操作)
baseUrl = "http://192.168.3.44:9000" # 無需啟動瀏覽器模式 def openChromBack(): return webdriver.Remote(command_executor="[http://localhost:4567/wd/hub](http://localhost:4567/wd/hub "selenium 本地測試地址")", desired_capabilities=DesiredCapabilities.HTMLUNIT) # 授權操作 def operationAuth(driver, mobile, inMobile): url = baseUrl + '/front/account/direcTrfAuth?userName=' + str(mobile) driver.get(url) # 獲取checkbox並勾選 driver.find_element_by_xpath("//*[@id='Agreement1']").click() driver.find_element_by_xpath("//*[@id='Agreement2']").click() # 找到密碼輸入框並輸入密碼 elem = driver.find_element_by_id("TransPwd") elem.send_keys(123456) # 提交表單 driver.find_element_by_xpath("//*[@id='submit']").click() print('授權使用者:' + mobile + '完成授權操作!') if __name__ == '__main__': # 獲取瀏覽器驅動 driver = openChromBack() mobiles = 18888888888 operationAuth(driver, str(mobile), str(inMobile))
頁面操作效果圖(只是為了檢視頁面的效果,要顯示瀏覽器需要呼叫webdriver.Chrome方法)