Selenium入門(4)--API翻譯(上)

這一章介紹一下selenium的各種介面,分為上中下三章。

selenium推薦使用

from selenium import webdrivern

來import。之後可以使用各種不同的webdriver

webdriver.Firefoxnwebdriver.FirefoxProfilenwebdriver.Chromenwebdriver.ChromeOptionsnwebdriver.Ienwebdriver.Operanwebdriver.PhantomJSnwebdriver.Remotenwebdriver.DesiredCapabilitiesnwebdriver.ActionChainsnwebdriver.TouchActionsnwebdriver.Proxyn

1.異常

我認為一個能使用的程序最重要的就是對異常的感知與處理。了解異常也是我們對程序進行debug等重要的過程。

# 無法選中的元素異常nselenium.common.exceptions.ElementNotSelectableExceptionn# 一個較為特殊的異常,發生在當一個元素存在但是並不能直接看見,因此也無法對其進行操作。常見發生在當我們想要點擊一個被隱藏的元素時nselenium.common.exceptions.ElementNotVisibleExceptionn# 當在服務端發生錯誤時會拋出的異常nselenium.common.exceptions.ErrorInResponseExceptionn# 發生在當你想觸發一個已失效的IME引擎nselenium.common.exceptions.ImeActivationFailedExceptionn# 發生在無法連接至一個IME引擎nselenium.common.exceptions.ImeNotAvailableExceptionn# 發生在cookie加在了錯誤的域nselenium.common.exceptions.InvalidCookieDomainExceptionn# 無效的元素狀態異常,不常見nselenium.common.exceptions.InvalidElementStateExceptionn# 無效的選擇器異常,基本僅發生在使用xpath過程中nselenium.common.exceptions.InvalidSelectorExceptionn# 無效的切換目標,當切換的窗口或標籤不存在時拋出nselenium.common.exceptions.InvalidSwitchToTargetExceptionn# 當ActionsChains move()方法無效時拋出nselenium.common.exceptions.MoveTargetOutOfBoundsExceptionn# 當切換到一個不存在的警告類Alert()時拋出nselenium.common.exceptions.NoAlertPresentExceptionn# 沒有這個方法異常nselenium.common.exceptions.NoSuchAttributeExceptionn# 沒有這個元素異常,相當常見nselenium.common.exceptions.NoSuchElementExceptionn# 沒有這個框架異常nselenium.common.exceptions.NoSuchFrameExceptionn# 沒有這個窗口異常nselenium.common.exceptions.NoSuchWindowExceptionn# 遙遠的瀏覽器引擎服務,並不太懂是什麼nselenium.common.exceptions.RemoteDriverServerExceptionn# 「污濁」的元素參考異常,比較難理解,污濁指的是已經不在這個頁面上了。主要原因是刷新網頁。nselenium.common.exceptions.StaleElementReferenceExceptionn# 超時異常nselenium.common.exceptions.TimeoutExceptionn# 無法設置cookie異常nselenium.common.exceptions.UnableToSetCookieExceptionn# 意料之外的警告異常,沒碰到過nselenium.common.exceptions.UnexpectedAlertPresentExceptionn# 意料之外的標籤名異常,沒碰到過nselenium.common.exceptions.UnexpectedTagNameExceptionn# 瀏覽器異常,大部分異常的父類nselenium.common.exceptions.WebDriverExceptionn

2.動作鏈

動作鏈可以允許我們對某個元素做一系列的操作,例如點擊,拖拽等。所有的一切都可以視為Action Chain類的衍生。

selenium.webdriver.common.action_chains.ActionChains(driver)n#n# 例子nmenu = driver.find_element_by_css_selector(".nav")nhidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")nnActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()n# 可以更改目標nmenu = driver.find_element_by_css_selector(".nav")nhidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")nnactions = ActionChains(driver)nactions.move_to_element(menu)nactions.click(hidden_submenu)nactions.perform()n

下面介紹一下action的種類

# 點擊nclickn# 長按nclick_and_holdn# 右擊ncontext_clickn# 雙擊ndouble_clickn# 拖拽到目標元素ndrag_and_drop(source, target)n# 拖拽到某個坐標ndrag_and_drop_by_offset(source, xoffset, yoffset)n# 例如key_down(Keys.CONTROL),僅用在control, alt, shift按下nkey_downn# 解除control, alt, shift按下nkey_upn# 移動到目標坐標nmove_by_offsetn# 移動到目標元素nmove_to_elementn# 很詭異的一個方法,沒啥用nmove_to_element_with_offsetn# 將動作鏈中的所有動作實現nperformn# 釋放按住的滑鼠nreleasen# 重製動作鏈nreset_actionsn# 傳送值nsend_keysn# 傳送值至元素nsend_keys_to_elementn

3.警告類

使用警告類來及時的與警告交互。並不是很懂用來幹什麼,大概翻譯一下其下的四個方法。

# 接受警告naccept()n# 傳送用戶名密碼至作者對話nauthenticate(username, password)n# 忽略警告ndismiss()n# 傳送值至警告nsend_keys(keysToSend)n# 警告文本ntextn

4.特殊key值

相當常用,模擬鍵盤輸入必備,列舉一下所有的key值

ADD = unALT = unARROW_DOWN = unARROW_LEFT = unARROW_RIGHT = unARROW_UP = unBACKSPACE = unBACK_SPACE = unCANCEL = unCLEAR = unCOMMAND = unCONTROL = unDECIMAL = unDELETE = unDIVIDE = unDOWN = unEND = unENTER = unEQUALS = unESCAPE = unF1 = unF10 = unF11 = unF12 = unF2 = unF3 = unF4 = unF5 = unF6 = unF7 = unF8 = unF9 = unHELP = unHOME = unINSERT = unLEFT = unLEFT_ALT = unLEFT_CONTROL = unLEFT_SHIFT = unMETA = unMULTIPLY = unNULL = unNUMPAD0 = unNUMPAD1 = unNUMPAD2 = unNUMPAD3 = unNUMPAD4 = unNUMPAD5 = unNUMPAD6 = unNUMPAD7 = unNUMPAD8 = unNUMPAD9 = unPAGE_DOWN = unPAGE_UP = unPAUSE = unRETURN = unRIGHT = unSEMICOLON = unSEPARATOR = unSHIFT = unSPACE = unSUBTRACT = unTAB = unUP = un

更新進度4/13

下次更新時間預計下周3,謝謝大家的關注


推薦閱讀:

深入剖析拉勾網,小白也來玩數據(一)
爬蟲軟體|軟體的簡單使用(二)
數據採集技術指南 第一篇 技術棧總覽
利用爬蟲和樹莓派3打造自己的語音天氣鬧鐘

TAG:Python | 爬虫 | Python入门 |