有很多不同的軟體測試方法,除了手動測試之外,我們這裡介紹如何進行自動化測試:
Eight Basic Components
driver = webdriver.Chrome()
driver.get("<https://www.selenium.dev/selenium/web/web-form.html>")
title = driver.title
url = driver.current_url
wait = WebDriverWait(driver, timeout=2)
wait.until(lambda d : revealed.is_displayed())
text_box = driver.find_element(by=By.NAME, value="my-text")
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")
text_box.send_keys("Selenium")
submit_button.click()
text = message.text
End the session
<aside> 📢 文件建議使用quit(),避免使用close()
</aside>
driver.quit()
首先,我們先改一下,將close(),改為quit()
# 關閉瀏覽器
driver.**quit()**
接下來,不再使用python內建的sleep(),改用Explicit waits。
以下的範例是等待id為「mui-6」的元件可以被找到。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 等待一段時間讓頁面載入結果
wait = WebDriverWait(driver, timeout=3)
wait.until(EC.presence_of_element_located((By.ID, "mui-6")))
我們也採用python的try、finally,當元件有問題時,還是會把瀏覽器關閉
記得要內縮~
**try:**
# 初始化 webdriver 並開啟瀏覽器
options = webdriver.ChromeOptions()
driver = webdriver.Chrome()
driver.get("<https://dev.egroup-infocenter.com/login>")
**finally:**
# 關閉瀏覽器
driver.quit()
注意,有時候雖然元件已經呈現,但是,可能還不能點選 (如:被隱藏),就需要再等待一下:
#點選設定
wait.until(EC.presence_of_element_located((By.XPATH, "//*[@id='__next']/div/header/div[1]/div/span/div/button")))
settings_button = driver.find_element(By.XPATH, "//*[@id='__next']/div/header/div[1]/div/span/div/button")
#等待可點選時再點選
**wait.until(EC.element_to_be_clickable(settings_button))**
settings_button.click()
assert元件的屬性與style:
assert dark_mode_button.**get_attribute("class")**=="MuiButtonBase-root css-1y0jul3", "in dark mode"
assert body.**value_of_css_property("background-color")**=="rgba(255, 255, 255, 1)", "in dark mode"