selenium
Python
Selenium 4 和 Selenium 3 主要有兩大差異, 以下分別說明。
從 Selenium 4.6 開始, 已經內建 Selenium manager, 它會在 PATH 指定的路徑下找不到 WebDriver 的執行檔時自動配置 WebDriver, 完全不需要自己下載檔案以及設定 PATH, 以下以 Firefox 為例:
即可自動配置 WebDriver 並開啟安裝的 Firefox 瀏覽器。
使用 Selenium manager 是最簡單方便的作法, 但如果你被迫使用較舊的版本, 必須自行下載安裝 WebDriver, 也要注意在建立 webdriver 物件時, 如果你的 WebDriver 執行檔並不在 PATH 指定的路徑下, 過去用來指定路徑的 executable_path
參數已經被棄用, 要改用 Service 物件。
不過自己要管理 WebDriver 執行檔其實有點麻煩, 不但要設定路徑, 還要跟著瀏覽器版本更新檔案, 比較簡單的方式是使用 webdriver-manager
安裝後即可如下建立 webdriver 物件, 此處以 Windows 內建的 Edge 瀏覽器為例:
這個 webdriver-manager 套件也可以用在 Selenium 3 上, 以 Firefox 為例:
如果你的瀏覽器並不是安裝在預設的路徑上, 就必須自行在建立 webdriver 物件時以對應瀏覽器的 Option 物件指定瀏覽器執行檔的路徑。例如我有一個可攜式的 Chrome 位於 d:\apps\PortableApps\GoogleChromePortable\App\Chrome-bin\chrome.exe, 就可以透過以下方式建立 webdriver 物件:
Selenium 4 不提供 find_element_by_XXX
的方法, 只提供取得第一個元素 find_element
或是所有元素的 find_elements
方法, 可以搭配 By
類別指定找尋元素的依據。
此處以 https://www.w3schools.com/html/html_tables.asp 為例:
其中的表格 id 為 "customers", 若要取得格中的第一個儲存格, 可以這樣做:
或是也可以分段先取得表格元素, 再取出表格中的所有儲存格, 然後再取出其中的第一個儲存格: