1. 程式人生 > >python+selenium 自動填寫表單並提交

python+selenium 自動填寫表單並提交

一.為了解決繁瑣、重複的操作步驟,然機器代替人來做

準備: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方法)