Selenium模組



l   在命令提示字元輸入pip install selenium,下載並安裝Selenium模組。
l   以下以Google Chrome瀏覽器為例,下載chromedriver:
ChromeDriver -WebDriver for Chrome

l   WebDriver物件與WebElement物件範例:
from selenium import webdriver
chromedriverPath = r"C:\Users\Timmy\Documents\Python\chromedriver.exe"
driver = webdriver.Chrome(chromedriverPath)
print(type(driver))
à <class 'selenium.webdriver.chrome.webdriver.WebDriver'>
driver.get("http://inventwithpython.com")
# 
參考下列WebDriver物件方法說明
element = driver.find_element_by_class_name("display-3")
print(type(element))
à <class 'selenium.webdriver.remote.webelement.WebElement'>
# 
參考下列WebElement物件屬性或方法說明
print(element.text) 
à Learn to Program. For Free.

l   WebDriver物件方法說明-find_element_*、find_elements_*:
WebDriver
物件方法find_element_*與find_elements_*皆返回WebElement物件,前者尋找比對符合的第一個元素,後者尋找比對符合的所有元素串列;如果找不到,會丟出NoSuchElement例外。
返回元素標籤為test的元素(只有此方法不分大小寫,"test"與"TEST"都可以比對<test>元素標籤):
.find_element_by_tag_name("test")
.find_elements_by_tag_name("test")
返回元素標籤為p且class屬性的值為test的元素:
.find_element_by_css_selector("p.test")
.find_elements_by_css_selector("p.test")
返回class屬性的值為test的元素:
.find_element_by_class_name("test")
.find_elements_by_class_name("test")
返回id屬性的值為test的元素:
.find_element_by_id("test")
.find_elements_by_id("test")
返回name屬性的值為test的元素:
.find_element_by_name("test")
.find_elements_by_name("test")
返回完全符合網頁文字test的<a>元素:
.find_element_by_link_text("test")
.find_elements_by_link_text("test")
返回部分符合網頁文字test的<a>元素:
.find_element_by_partial_link_text("test")
.find_elements_by_partial_link_text("test")

l   WebDriver物件方法說明-.back()、.forward()、.refresh()、.quit():
點按瀏覽器下一頁按鈕:
.back()
點按瀏覽器上一頁按鈕:
.forward()
點按瀏覽器重新整理按鈕:
.refresh()
點按瀏覽器關閉按鈕:
.quit()

l   WebElement物件屬性或方法說明-.tag_name、.get_attribute()、.text、.location、.is_displayed():
from selenium import webdriver
chromedriverPath = r"C:\Users\Timmy\Documents\Python\chromedriver.exe"
driver = webdriver.Chrome(chromedriverPath)
driver.get("http://inventwithpython.com")
element = driver.find_element_by_link_text("Al's blog")
# 
返回元素標籤字串
print(element.tag_name) 
à a
# 
返回元素屬性的值的字串
print(element.get_attribute("href")) 
à http://inventwithpython.com/blog/
# 
返回元素文字字串
print(element.text) 
à Al's blog
# 
返回元素位置座標
print(element.location) 
à {'x': 151, 'y': 8152}
# 
返回元素可見與否
print(element.is_displayed()) 
à True

l   WebElement物件屬性或方法說明-.send_keys()、.clear()、.submit()、.is_enabled():
from selenium import webdriver
chromedriverPath = r"C:\Users\Timmy\Documents\Python\chromedriver.exe"
driver = webdriver.Chrome(chromedriverPath)
driver.get("https://mail.yahoo.com")
# 
以下方法要對文字欄位的<input>或<textarea>元素進行操作
element = driver.find_element_by_id("login-username")
# 
填寫表單
element.send_keys("Hello World")
# 
清除表單
element.clear()
# 
提交表單
element.submit()
# 
返回提交的表單啟用與否
print(element.is_enabled()) 
à True

l   WebElement物件屬性或方法說明-.click()、.is_selected():
from selenium import webdriver
chromedriverPath = r"C:\Users\Timmy\Documents\Python\chromedriver.exe"
driver = webdriver.Chrome(chromedriverPath)
driver.get("http://www.wibibi.com/info.php?tid=190")
# 
以下方法要對選項按鈕欄位的<input>元素進行操作
element = driver.find_element_by_name("location")
# 
點按頁面
element.click()
# 
返回核取方塊或選項按鈕勾選與否
print(element.is_selected()) 
à True

l   使用selenium.webdriver.common.keys模組傳送鍵盤按鍵:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
chromedriverPath = r"C:\Users\Timmy\Documents\Python\chromedriver.exe"
driver = webdriver.Chrome(chromedriverPath)
driver.get("https://nostarch.com/")
element = driver.find_element_by_tag_name("html")
# 
參考下列Keys物件屬性說明
element.send_keys(Keys.END)

l   Keys物件屬性說明:
鍵盤的上下左右方向鍵:
Keys.UP, Keys.DOWN, Keys.LEFT, Keys.RIGHT
鍵盤的Enter按鍵和Mac的Return按鍵功能相同:
Keys.ENTER, Keys.RETURN
鍵盤的Esc按鍵:
Keys.ESCAPE
其它與鍵盤按鍵名稱相同的Keys物件屬性:
Keys.TAB, Keys.F1, Keys.F2, …, Keys.F12, Keys.BACK_SPACE, Keys.DELETE, Keys.HOME, Keys.END, Keys.PAGE_UP, Keys.PAGE_DOWN

留言

這個網誌中的熱門文章

讓Windows XP自動登入

Automatically classify folders by file name (windows Bash)

Icescream 它是一個分散式的 compiler 架構…