l 在命令提示字元輸入pip install selenium,下載並安裝Selenium模組。
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.
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")
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()
點按瀏覽器下一頁按鈕:
.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
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
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
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)
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
鍵盤的上下左右方向鍵:
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
沒有留言:
張貼留言