Selenim 是一個自動化測試工具,可以利用它驅動瀏覽器執行特定的動作,如點擊、下拉等操作,同時可以獲取瀏覽器當前呈現的頁面的源代碼,做到可見及可爬
1.使用流程
1)聲明瀏覽器對象
Selenium 支持非常多的瀏覽器,如Chrome、Firefox、Edge等,還有Android、BlackBerry等手機端瀏覽器。
2)訪問頁面
可以通過get()方法來請求網頁,參數傳入鏈接URL即可。
3)查找節點
Selenium 可以驅動瀏覽器完成各種操作,比如填充表單、模擬點擊等。

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
如要獲取多個節點,element改為elements
4)節點交互
Selenium可以驅動瀏覽器來執行一血操作,也就是說可以讓瀏覽器模擬執行一些動作。比較常見的用法有:輸入文字時用send_keys()方法,清空文字時用clear()方法,點擊按鈕時用click()方法
更多操作可見 http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement
5)動作鏈
鼠標拖曳、鍵盤按鍵等
ActionChains http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains
6)執行JavaScript
調用execute_script()方法即可,傳入參數為js方法
7)獲取節點信息
獲取屬性 .get_attribute()
獲取文本值 .get_text()
獲取id、位置、標簽名和大小
.id .location .tag_name .size
8)切換Frame
switch_to.frame()
Selenium打開頁面后,默認在父級Frame中進行操作,如果頁面中存在子Frame,則不能獲取到子Frame中的節點
9)延時等待
隱式等待
如果Sekenium沒有在DOM中找到節點,將繼續等待,超出設定時間后,則拋出找不到節點的異常。
.implicitly_wait()
顯式等待
指定要找到的節點,然后指定一個最長等待時間。如果在規定時間內加載出來了這個節點,就返回查找的節點;如果到了規定時間依然沒有加載出該節點,則拋出異常
WebDriverWait().until(expected_conditions.presence_of_element_located(()))
10)Cookies
使用Selenium,可以方便地對Cookies進行操作
.get_cookies() 獲取cookie
.add_cookie() 添加cookie
.dele_all_cookies() 刪除所有cookie