CodeGym /課程 /Python SELF TW /填寫表單:文字輸入與按鍵操作

填寫表單:文字輸入與按鍵操作

Python SELF TW
等級 36 , 課堂 0
開放

1. 與表單元素互動簡介

網頁中的表單是互動的起點。想像一下表單就像是一個神秘的控制面板,讓用戶可以和系統互動。但與其給掃地機器人指令,我們在這裡是給網站傳遞資訊。

如何在文字框中輸入文字

首先我們來談談如何利用 Selenium 在文字框中輸入文字。這可以透過方法 send_keys() 來完成。我們一步一步來看看這怎麼操作。

Python

from selenium import webdriver

# 設定 webdriver 路徑,這裡是你 webdriver 的本地路徑
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

# 開啟網頁
driver.get('http://example.com/login')

# 找到輸入框 (例如通過 id) 並輸入文字
username_field = driver.find_element_by_id('username')
username_field.send_keys('我的超炫帳戶')

password_field = driver.find_element_by_id('password')
password_field.send_keys('我的超級秘密密碼')

在這個簡單的範例中,我們開啟了一個頁面,並通過 ID 找到輸入框。接著,我們使用 send_keys() 方法來給輸入框傳遞文字。很簡單對吧,就像進階版的 copy-paste!

填寫文字框的小技巧

如果你覺得表單的行為有點怪異,可能是因為輸入框中已經有舊文字。在輸入新文字之前,請用 clear() 方法清除舊文字。

Python

username_field.clear()
username_field.send_keys('新值')

這個小技巧能讓你省下不少麻煩,真的!

2. 按鍵操作

現在輸入框已經填完了,是時候按按鍵了,例如提交表單。在 Selenium 中,我們可以用方法 click() 來完成。就像你按下「查看更多梗圖」的按鈕一樣,但這次是程式控制的。

Python

# 找到按鈕 (例如通過名稱) 並點擊
login_button = driver.find_element_by_name('login')
login_button.click()

就這樣,我們的 Selenium 腳本變成了按鍵大師,比你在遊戲中狂點按鍵更厲害!

使用範例

我們來看一個範例,結合 send_keys()click() 方法來填寫和提交註冊表單。

Python

# 開啟註冊頁面
driver.get('http://example.com/register')

# 填寫註冊表單
driver.find_element_by_id('first_name').send_keys('Ivan')
driver.find_element_by_id('last_name').send_keys('Ivanov')
driver.find_element_by_id('email').send_keys('ivan@example.com')
driver.find_element_by_id('password').send_keys('超級秘密123')

# 按下「註冊」按鈕
register_button = driver.find_element_by_css_selector('.register-button')
register_button.click()

這個簡單的範例展示了如何自動化網站上的註冊過程。這對測試註冊表單和模擬用戶操作非常有幫助。

3. 解決麻煩的表單

有時候網頁會讓你抓狂。你按了按鈕,卻沒反應。更糟的是,頁面還報錯了。我們來討論一些常見問題以及解決它們的方法。

處理動態元素

有些頁面的元素不會立即載入。在這種情況下,你的腳本可能會嘗試與某個尚未載入的元素互動。這就像你開始煎蛋,但蛋還在冰箱裡。

為避免這些情況,請使用等待功能。Selenium 可以讓你的腳本等到某個元素可用後再進行互動:

Python

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

# 等待元素可點擊後再點擊
register_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, '.register-button'))
)
register_button.click()

使用 WebDriverWait,你可以告訴 Selenium 等到元素準備好再執行動作。這大大提高了腳本的穩定性。

處理隱藏的元素

有些頁面的元素可能是隱藏的,例如隱藏的按鈕或輸入框。如果嘗試與它們互動,可能會報錯。在這種情況下,可以用 JavaScript 讓它們變得可見:

Python

driver.execute_script("arguments[0].style.visibility='visible';", hidden_element)
hidden_element.click()

這個方法可以讓你成功與那些因為某些原因被隱藏的元素互動。

4. 實際應用:表單自動化

現在我們已經瞭解如何與表單互動,讓我們來看看如何在現實生活中應用它。

你的老闆決定所有人每天都要通過網頁表單提交日報。而你當然不想每天都手動完成這件事啦。透過 Selenium,你可以建立腳本,讓它每天自動填寫並提交你的日報表單。

日報自動化範例

假設我們有一個網站,提供了一個每日報告的表單。表單包括姓名、部門和完成的工作內容欄位。我們來實現自動化:

Python

driver.get('http://example.com/daily_report')

# 填寫日報表單
driver.find_element_by_id('name').send_keys('安娜・彼得洛娃')
driver.find_element_by_id('department').send_keys('科技部')
driver.find_element_by_id('report').send_keys('今天修復了所有 BUG!')

# 提交表單
submit_button = driver.find_element_by_id('submit')
submit_button.click()

這樣的腳本可以節省寶貴時間並避免人為失誤。不過,對於複雜的表單,記得測試每一步並考慮可能的錯誤情況。

今天的講座到此結束!我們學會了如何填寫輸入框和按下按鈕,就像系統化的網上問卷一樣,這將賦予你與網頁互動的超強自動化能力。

繼續探索 Selenium,請繼續關注我們,學習更多將你的瀏覽器變成真正的自動化機器的方法吧!

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION