這篇文章主要講解了“selenium庫的使用方法”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“selenium庫的使用方法”吧!
創(chuàng)新互聯(lián)專注于隴縣網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供隴縣營銷型網(wǎng)站建設,隴縣網(wǎng)站制作、隴縣網(wǎng)頁設計、隴縣網(wǎng)站官網(wǎng)定制、小程序制作服務,打造隴縣網(wǎng)絡公司原創(chuàng)品牌,更為您提供隴縣網(wǎng)站排名全網(wǎng)營銷落地服務。
1.0、前期準備
首先我們需要安裝selenium庫,pip3 install selenium
其次我們還需要安裝并且配置好ChromeDriver,來對接Selenium。
安裝配置很簡單,只需要下載對應的版本后將chromedriver.exe文件復制python路徑下的Scripts路徑下即可。
2.0、配置完成后我們來簡單實例一下
webdriver.Chrome()表示創(chuàng)建一個chrome對象,會在電腦上打開瀏覽器
browser.get('https://www.baidu.com')get方法表示請求一個頁面,這里打開的是百度
print(browser.page_source)輸出獲取頁面的源代碼,即百度頁面的源代碼。
browser.close()關閉瀏覽器
其他:
browser.set_window_size(1400,800)設置瀏覽器的大小。
browser.refresh()刷新瀏覽器
clear()清除文本
獲取的百度源代碼圖:
3.0、我們在獲取到頁面后同樣需要獲取到節(jié)點,然后才能繼續(xù)后面的操作。繼續(xù)實例一下。
3.1首先分析頁面
如圖,我們在開發(fā)者模式中可以看待百度輸入框的class名為s_ipt,name名為wd,id名為kw。同樣的方式我們可以找到百度一下按鈕的class名為btn self-btn bg s_btn,id為su。
3.2、例如我們用類名來獲取節(jié)點并進行輸入:
browser.find_element_by_class_name('s_ipt')是利用class名獲取節(jié)點。
send_keys('selenium')輸入的值為selenium。
time.sleep(3)等3秒
btn=browser.find_element_by_id('su')獲取到百度一下按鈕。
btn.click()點擊該按鈕。
如果我們熟練了之后可以這樣寫browser.find_element_by_class_name('s_ipt').send_kes('selenium')獲取到輸入框并輸入內(nèi)容。點擊按鈕同樣的方式也可。
獲取節(jié)點的方法還有幾種,我們來看一下。
find_element_by_class_name()通過class名來獲取。
find_element_by_id()通過id名來獲取。
find_element_by_name()通過屬性名來獲取。
find_element_by_xpath()通過xpath的方式獲取。
find_element_by_tag_name()通過節(jié)點名來獲取,比如input就是find_element_by_tag_name('input')
find_element_by_css_selector()通過css的方式獲取,不如id為kw就是find_element_by_css_selector('#kw'),
find_element_by_link_text()通過文本值來取,比如123:find_element_by_link_text('123')
find_element_by_partial_link_text()也是通過文本來取,partial的意思是部分的,所以比如123:find_element_by_partial_link_text('1')即可。
這樣寫,你可能會覺得很麻煩。當然也有一種通用的方法,
比如用id獲取可以這樣寫:find_element(By.ID,'kw')需要導入
from selenium.webdriver.common.by import By
第一個為獲取的方式,第二個為值。獲取的方式是原方法by_后的字母大寫就好,比如通class名獲取就可以是find_element(By.CLASS_NAME,'s_ipt')。
注意:以上方法只返回單個節(jié)點,如果符合要求的有多個節(jié)點,只返回第一個。
3.3、獲取多個節(jié)點:
直接將element改成elements就可以了,通用方法也一樣。
實例演示(打開百度輸入武漢景區(qū),打印每一條的標題):
結(jié)果:
4.0、鼠標事件
4.1實例一下(打開百度,鼠標懸浮到更多產(chǎn)品):
首先需要導入
from selenium.webdriver.common.action_chains import ActionChains
ActionChains(browser)用來構(gòu)造ActionChains對象。
context_click(cp)將鼠標懸浮在某元素上。
perform()提交操作,不提交是沒有效果的。
其他:
move_to_element()右擊。
double_click()雙擊。
drag_and_drop()拖動。
context_click()模擬右鍵操作,需要元素定位。
注意:這里我用的是文本來定位,因為class名,id名在變化。
5.0、鍵盤操作
5.1、首先來說組合鍵:
send_keys(Keys.CONTROL,‘a(chǎn)’)Keys.CONTROL表示Ctrl鍵,所以就是ctrl+a
send_keys(Keys.CONTROL,‘c’)Keys.CONTROL表示Ctrl鍵,所以就是ctrl+c
其他都是一樣的,你懂的。
5.2、其他
send_keys(Keys.BACK_SPACE)刪除鍵(BackSpace)
send_keys(Keys.SPACE) 空格鍵(Space)
send_keys(Keys.TAB) 制表鍵(Tab)
send_keys(Keys.ESCAPE) 回退鍵(Esc)
send_keys(Keys.ENTER) 回車鍵(Enter)
6.0、獲取屬性,文本,id,位置,標簽名,大小,位置。
get_attribute()獲取屬性,比如獲取class,即get_attribute('class')
size 獲取元素大小
text 獲取元素文本
title 獲取當前頁面的title
current_url 獲取當前頁面的url
location 獲取元素的相對位置
tag_name 獲取標簽名
以百度為例:
結(jié)果圖:
7.0、切換表單
在Web應用中經(jīng)常會遇到frame/iframe表單嵌套頁面的應用,Selenium打開頁面后默認在frame中找節(jié)點,也就是說,我們找不到iframe的節(jié)點。這時候需要:
switch_to.frame()先切換個iframe表單。參數(shù)可以填寫id和name屬性,如果沒有id和name,你也可以通過上面獲取節(jié)點的操作獲取節(jié)點,作為參數(shù)。
8.0、窗口切換
current_window_handle返回當前窗口的句柄
window_handles返回所有的窗口句柄
switch_to.window()跳轉(zhuǎn)窗口
實例:
9.0、延時等待(隱式等待和顯式等待)
為什么要等待?因為有時候頁面還沒有完全的加載不出,有些元素可能就獲取不到導致異常。
比如在百度頁面,點擊登錄后,再點擊立即注冊,如果不延時等待就會報錯(可以自己去試一下)
9.1隱式等待
implicitly_wait(10)表示在10秒內(nèi),只要有沒有找到的節(jié)點,在10秒內(nèi)會一直尋找,超過就報異常。
9.2顯式等待
等待某個條件成立時繼續(xù)執(zhí)行,否則在達到最大時長時拋出超時異常。
導入:from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 5, 0.5).until(
EC.presence_of_element_located((By.ID, "kw"))
)
dirver表示驅(qū)動
5表示等待的最長時間
0.5是每隔0.5秒檢測一次
until()方法用來傳入等待的條件
presence_of_element_located表示節(jié)點出現(xiàn)的意思
還有其他的判斷可以參考官方文檔。
10、前進和后退
back()后退
forward()前進
11、處理JavaScript所生成的alert、confirm
text 返回 alert/confirm/prompt 中的文字信息。
accept() 接受現(xiàn)有警告框。
dismiss() 解散現(xiàn)有警告框。
send_keys() 發(fā)送文本至警告框。
首先需要定位到js的彈窗
browser.switch_to.alert.accept()定位到彈窗執(zhí)行確定也就是接收。
browser.switch_to.alert就是定位到彈窗。
12、窗口截圖
get_screenshot_as_file("E:\\1.jpg")
13、下拉框的操作
導入:from selenium.webdriver.support.select import Select
Select('定位').select_by_value(“選擇值”)直接定位到元素然后選擇就好
14、調(diào)用js代碼(比如下拉進度條,selenium并沒有提供方法)
首先利用設定
j="window.scrollTo(100,450);"
window.scrollTo()方法用于設置瀏覽器窗口滾動條的水平和垂直位置。
第一個參數(shù)就是水平位置,第二個參數(shù)就是垂直位置。
然后再利用browser.execute_script(j)方法去執(zhí)行js代碼即可。
15、Cookies的操作
實例:
注意:以上browser都是我得命名,你可以修改成你的。
總結(jié):以上很多方法我都沒有實例,關鍵是自己要敲代碼。
感謝各位的閱讀,以上就是“selenium庫的使用方法”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對selenium庫的使用方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!