2019年1月29日 星期二

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")
返回元素標籤為pclass屬性的值為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按鍵和MacReturn按鍵功能相同:
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

沒有留言:

 Ubuntu has a mechanism, that is, the installed network card (NIC) will be renamed to another name when the system is booted. Although there...