網頁資料定位函數 | 說明 |
---|---|
find_element(s)(By.ID, “ ”) | 使用id屬性值定位 |
find_element(s)(By.NAME, “ ”) | 使用name屬性值定位 |
find_element(s)(By.LINK_TEXT, “ ”) | 使用超連結文字定位 |
find_element(s)(By.PARTIAL_LINK_TEXT, “ ”) | 使用部分超連結文字定位 |
find_element(s)(By.TAG_NAME, “ ”) | 使用標籤名稱定位 |
find_element(s)(By.CLASS_NAME, “ ”) | 使用class屬性值定位 |
find_element(s)(By.XPATH, “ ”) | 使用XPath屬性定位 |
find_element(s)(By.CSS_SELECTOR, “ ”) | 使用CSS選擇器定位 |
上述的函數為目前Selenium新版本(Version 4.X 以後) 的表示寫法,如果為舊版本(Version 4.X 以前)則使用find_element(s)_by_XX(“ ”)函數 表示。不要寫錯了!!! 不然執行程式時會出現錯誤訊息:找不到此函數屬性。 |
以tronclass登入網頁與github登入網頁為例,練習使用Selenium工具定位資料位置。
使用id屬性
from selenium import webdriver
from selenium.webdriver.common.by import By
import os
driver = webdriver.Chrome("./chromedriver")
html_path = "file:///" +os.path.abspath("Tronclass.html")
driver.implicitly_wait(10)
driver.get(html_path)
form = driver.find_element(By.ID, "content")
print(form.tag_name)
print(form.get_attribute("id"))
driver.quit()
執行結果:
使用name屬性
from selenium import webdriver
from selenium.webdriver.common.by import By
import os
driver = webdriver.Chrome("./chromedriver")
html_path = "file:///" +os.path.abspath("Tronclass.html")
driver.implicitly_wait(10)
driver.get(html_path)
user = driver.find_element(By.NAME, "username")
print(user.tag_name)
print(user.get_attribute("type"))
執行結果:
使用XPath表達式
from selenium import webdriver
from selenium.webdriver.common.by import By
import os
driver = webdriver.Chrome("./chromedriver")
html_path = "file:///" +os.path.abspath("Tronclass.html")
driver.implicitly_wait(10)
driver.get(html_path)
# 定位<form>標籤
form = driver.find_element(By.XPATH, "//form[@id='fm1']")
print(form.get_attribute("type"))
# 定位密碼欄位
pwd = driver.find_element(By.XPATH, "//form[@id='fm1']/section[2]/input")
print(pwd.get_attribute("type"))
# 定位登入按鈕
clear = driver.find_element(By.XPATH, "//input[@class='btn-submit']")
print(clear.get_attribute("type"))
driver.quit()
執行結果:
使用標籤名稱
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
s = Service("chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.implicitly_wait(10)
driver.get("https://github.com/login")
p = driver.find_element(By.TAG_NAME, "h1")
print(p.text)
driver.quit()
執行結果:
使用class屬性
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
s = Service("chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.implicitly_wait(10)
driver.get("https://github.com/login")
login= driver.find_element(By.CLASS_NAME, "login-callout")
print(login.text)
driver.quit()
執行結果:
使用CSS選擇器
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
s = Service("chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.implicitly_wait(10)
driver.get("https://github.com/login")
h1 = driver.find_element(By.CSS_SELECTOR, "h1")
print(h1.text)
p = driver.find_element(By.CSS_SELECTOR, "p.login-callout")
print(p.text)
driver.quit()
執行結果: