Python 版本限制

Selenium 4 需要 Python 3.7 或是更新的版本;pip 的版本必須在 19 以上,否則在安裝時會出現問題,更新 pip 的方式如下:

python -m pip install --upgrade

在 Python 3.7 以後的版本

執行安裝時,預設會安裝 Selenium 4 的最新版本。

# 在 Python 3.7 以後的版本,這會安裝 Selenium 4 的最新版本
pip install selenium

如果需要安裝特定的版本,需要特別指定版本號碼

pip install selenium==3.141

在 Python 3.6 以前的版本

執行安裝時,預設會安裝 Selenium 3.14

# 在 Python 3.6 以前的版本,這會安裝 Selenium 3.14
pip install selenium

元素定位方法變更

單一元素定位

舊的方法 (Selenium 3)

driver.find_element_by_class_name("className")

driver.find_element_by_css_selector(".className")

driver.find_element_by_id("elementId")

driver.find_element_by_link_text("linkText")

driver.find_element_by_name("elementName")

driver.find_element_by_partial_link_text("partialText")

driver.find_element_by_tag_name("elementTagName")

driver.find_element_by_xpath("xpath")

新的方法 (Selenium 4)

必須先匯入 By 這個類別

from selenium.webdriver.common.by import By

driver.find_element(By.CLASS_NAME,"xx")

driver.find_element(By.CSS_SELECTOR,"xx")

driver.find_element(By.ID,"xx")

driver.find_element(By.LINK_TEXT,"xx")

driver.find_element(By.NAME,"xx")

driver.find_element(By.PARITIAL_LINK_TEXT,"xx")

driver.find_element(By.TAG_NAME,"xx")

driver.find_element(By.XPATH,"xx")

多元素定位

舊的方法 (Selenium 3)

driver.find_elements_by_class_name("className")

driver.find_elements_by_css_selector(".className")

driver.find_elements_by_id("elementId")

driver.find_elements_by_link_text("linkText")

driver.find_elements_by_name("elementName")

driver.find_elements_by_partial_link_text("partialText")

driver.find_elements_by_tag_name("elementTagName")

driver.find_elements_by_xpath("xpath")

新的方法 (Selenium 4)

必須先匯入 By 這個類別

driver.find_elements(By.CLASS_NAME,"xx")

driver.find_elements(By.CSS_SELECTOR,"xx")

driver.find_elements(By.ID,"xx")

driver.find_elements(By.LINK_TEXT,"xx")

driver.find_elements(By.NAME,"xx")

driver.find_elements(By.PARITIAL_LINK_TEXT,"xx")

driver.find_elements(By.TAG_NAME,"xx")

driver.find_elements(By.XPATH,"xx")

棄用 executable_path,改用 Service 物件

舊的使用方式 (Selenium 3)

from selenium import webdriver

options = webdriver.ChromeOptions()

options.add_experimental_option("excludeSwitches", ["enable-automation"])

options.add_experimental_option("useAutomationExtension", False)

driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, options=options)

新的使用方式 (Selenium 4)


from selenium import webdriver

from selenium.webdriver.chrome.service import Service as ChromeService

options = webdriver.ChromeOptions()

options.add_experimental_option("excludeSwitches", ["enable-automation"])

options.add_experimental_option("useAutomationExtension", False)

service = ChromeService(executable_path=CHROMEDRIVER_PATH)

driver = webdriver.Chrome(service=service, options=options)

新增相對定位方式

增加了「上、下、左、右、附近」的定位方式

上方元素:above()

下方元素:below()

右方元素:toLeftOf()

左方元素:toRightOf()

附近元素:near()

改採 W3C WebDriver 標準

這對一般使用者的影響不大,主要的改變是 Capabilities 及 Actions 類別。

參考資料

Selenium 官方下載頁

Last modified: 2023-02-13

Author

Comments

Write a Reply or Comment

Your email address will not be published.