顯示具有 Selenium 標籤的文章。 顯示所有文章
顯示具有 Selenium 標籤的文章。 顯示所有文章

2024-11-25

Selenium 4.6 之後你真的不用下載 webdriver 或使用 WebDriverManager

如題。

在 Selenium 4.6 之後,已經不用另外下載 webdriver,不用帶路徑,不用使用 WebDriverManager 解決下載和帶路徑的問題。

你只需要:

from selenium import webdriver
driver = webdriver.Chrome()
這樣就可以跑了!預設是目前的 stable 版本。

-

如果你需要特定版本的 chrome,可以用Options指定,selenium manager 會自動下載你指定的版本:

options = webdriver.ChromeOptions()
options.browser_version = '120'
driver = webdriver.Chrome(options=options)

除了特定版本號,也可以帶標籤如stable(目前 CfT 版本)、beta(下一個版本穩定)、dev(目前正在開發版本)、canary(為開發人員每晚建置)、esr(擴充支援版本,僅用於 Firefox)。

2024-11-19

Selenium + ChromeDriver - 開啟 DevTools 的行動裝置模式

在 Google Chrome 瀏覽器的 F12 開發工具中,有個很方便的行動裝置模式,可以模擬網站在行動裝置上的顯示和行為。在測試為手機、平板設計的網站時非常好用!
 
在自動化的時候也可以用 add_experimental_option 來設定 webdriver 開啟行動裝置模式,上個最小 Python 範例:

from selenium import webdriver

mobile_emulation = { "deviceName": "iPhone 12 Pro" }
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(options=options)

deviceName 具體有哪些 device,可以看一下自己的 Chrome 有哪些內建的裝置可以使用:
點擊上面選單的 Edit,還有更多的裝置,也可以新增自己設定:

至於在 code 裡可以用類似下面的方式來設定自己需要的裝置設定:

from selenium import webdriver

mobile_emulation = {
    "deviceMetrics": { "width": 360, "height": 640, "pixelRatio": 3.0 },
    "userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
    "clientHints": {"platform": "Android", "mobile": True} 
}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome("/driver/path", options=options)

2022-12-08

[Python + Selenium] webdriver.get() 設置最長等待時間

webdriver.get(url) 到一個頁面後,會等到頁面載入完成(onload 事件觸發) ,然後再將控制權交回給測試 script。

在網路不穩定的情況下,或網站也些問題時,等到頁面 onload 可能非常久。
webdriver.get 預設的 timeout 在某些不同的 webdriver 中可能到5分鐘之久。

所以可以用 set_page_load_timeout() 設定一個最長的頁面等待時間:

from selenium import webdriver

driver = webdriver.Chrome()
driver.set_page_load_timeout(20) #傳入最長等待秒數

try:
    driver.get("http://www.example.com")
    
except TimeoutError:
    print("Timed out waiting for page to load.")

以上將頁面的最長等待時間設為20秒,等候頁面超過20秒會拋出 TimeoutError。

2017-09-09

Python + Selenium 網頁自動化環境設定

第0步 安裝 Python

首先確定已經安裝了Python。
還沒有安裝的話,可以從Python官網 https://www.python.org 下載。

第1步 安裝 Python 的 selenium 套件

打開 terminal 或 cmd 輸入:

pip install selenium

第2步 下載 webdriver

Selenium 需要 webdriver 來控制瀏覽器。
依照自己使用的瀏覽器,下載適用於該瀏覽器版本的 webdriver。

以下是一些常用瀏覽器的 webdriver:
Google Chrome
https://sites.google.com/chromium.org/driver/
Firefox
https://github.com/mozilla/geckodriver/releases

下載後解壓縮,將 webdriver 放在於任何目錄都行。

如果你用 selenium 4.6 之後的版本,恭喜你不用另外下載 webdriver。

最終步 可以開始寫自動化了

以下是一個簡單的範例程式碼,會打開 Google 首頁並搜尋關鍵字:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()  # 除非更早以前的 selesium 版本,需要帶 webdriver 的路徑

# 打開網頁
driver.get("https://www.google.com")

# 在搜尋框中輸入關鍵字並送出
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python Selenium")
search_box.send_keys(Keys.ENTER)

# 等待3秒讓你看看而已(?)
time.sleep(3)

# 關閉瀏覽器
driver.quit()