Table of Contents
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 類別。
Comments