中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

selenium庫的使用方法

發布時間:2021-07-13 18:09:30 來源:億速云 閱讀:515 作者:chen 欄目:大數據

這篇文章主要講解了“selenium庫的使用方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“selenium庫的使用方法”吧!


1.0、前期準備

首先我們需要安裝selenium庫,pip3 install selenium

其次我們還需要安裝并且配置好ChromeDriver,來對接Selenium。

安裝配置很簡單,只需要下載對應的版本后將chromedriver.exe文件復制python路徑下的Scripts路徑下即可。

2.0、配置完成后我們來簡單實例一下

selenium庫的使用方法

  • webdriver.Chrome()表示創建一個chrome對象,會在電腦上打開瀏覽器

  • browser.get('https://www.baidu.com')get方法表示請求一個頁面,這里打開的是百度

  • print(browser.page_source)輸出獲取頁面的源代碼,即百度頁面的源代碼。

  • browser.close()關閉瀏覽器

其他:

  • browser.set_window_size(1400,800)設置瀏覽器的大小。

  • browser.refresh()刷新瀏覽器

  • clear()清除文本

獲取的百度源代碼圖:

selenium庫的使用方法

3.0、我們在獲取到頁面后同樣需要獲取到節點,然后才能繼續后面的操作。繼續實例一下。

3.1首先分析頁面

selenium庫的使用方法

如圖,我們在開發者模式中可以看待百度輸入框的class名為s_ipt,name名為wd,id名為kw。同樣的方式我們可以找到百度一下按鈕的class名為btn self-btn bg s_btn,id為su。

3.2、例如我們用類名來獲取節點并進行輸入:

selenium庫的使用方法

browser.find_element_by_class_name('s_ipt')是利用class名獲取節點。

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')獲取到輸入框并輸入內容。點擊按鈕同樣的方式也可。

獲取節點的方法還有幾種,我們來看一下。

  1. find_element_by_class_name()通過class名來獲取。

  2. find_element_by_id()通過id名來獲取。

  3. find_element_by_name()通過屬性名來獲取。

  4. find_element_by_xpath()通過xpath的方式獲取。

  5. find_element_by_tag_name()通過節點名來獲取,比如input就是find_element_by_tag_name('input')

  6. find_element_by_css_selector()通過css的方式獲取,不如id為kw就是find_element_by_css_selector('#kw'),

  7. find_element_by_link_text()通過文本值來取,比如<a>123</a>:find_element_by_link_text('123')

  8. find_element_by_partial_link_text()也是通過文本來取,partial的意思是部分的,所以比如<a>123</a>: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')。

注意:以上方法只返回單個節點,如果符合要求的有多個節點,只返回第一個。

3.3、獲取多個節點:

直接將element改成elements就可以了,通用方法也一樣。

實例演示(打開百度輸入武漢景區,打印每一條的標題):

selenium庫的使用方法

結果:

selenium庫的使用方法

4.0、鼠標事件

4.1實例一下(打開百度,鼠標懸浮到更多產品):

selenium庫的使用方法

首先需要導入

from selenium.webdriver.common.action_chains import ActionChains

  • ActionChains(browser)用來構造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’)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,位置,標簽名,大小,位置。

  1. get_attribute()獲取屬性,比如獲取class,即get_attribute('class')

  2. size     獲取元素大小

  3. text        獲取元素文本

  4. title      獲取當前頁面的title 

  5. current_url 獲取當前頁面的url

  6. location    獲取元素的相對位置

  7. tag_name    獲取標簽名

以百度為例:

selenium庫的使用方法

結果圖:

selenium庫的使用方法

7.0、切換表單

在Web應用中經常會遇到frame/iframe表單嵌套頁面的應用,Selenium打開頁面后默認在frame中找節點,也就是說,我們找不到iframe的節點。這時候需要:

switch_to.frame()先切換個iframe表單。參數可以填寫id和name屬性,如果沒有id和name,你也可以通過上面獲取節點的操作獲取節點,作為參數。

8.0、窗口切換

  1. current_window_handle返回當前窗口的句柄

  2. window_handles返回所有的窗口句柄

  3. switch_to.window()跳轉窗口

實例:

selenium庫的使用方法

9.0、延時等待(隱式等待和顯式等待)

為什么要等待?因為有時候頁面還沒有完全的加載不出,有些元素可能就獲取不到導致異常。

比如在百度頁面,點擊登錄后,再點擊立即注冊,如果不延時等待就會報錯(可以自己去試一下)

9.1隱式等待

implicitly_wait(10)表示在10秒內,只要有沒有找到的節點,在10秒內會一直尋找,超過就報異常。

9.2顯式等待

等待某個條件成立時繼續執行,否則在達到最大時長時拋出超時異常。

導入:from selenium.webdriver.support import expected_conditions as EC

 WebDriverWait(driver, 5, 0.5).until(

                      EC.presence_of_element_located((By.ID, "kw"))

                      )

  1. dirver表示驅動

  2. 5表示等待的最長時間

  3. 0.5是每隔0.5秒檢測一次

  4. until()方法用來傳入等待的條件

  5. presence_of_element_located表示節點出現的意思

還有其他的判斷可以參考官方文檔。

10、前進和后退

selenium庫的使用方法

  • back()后退

  • forward()前進

11、處理JavaScript所生成的alert、confirm

  • text 返回 alert/confirm/prompt 中的文字信息。

  • accept() 接受現有警告框。

  • dismiss() 解散現有警告框。

  • send_keys() 發送文本至警告框。

首先需要定位到js的彈窗

browser.switch_to.alert.accept()定位到彈窗執行確定也就是接收。

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、調用js代碼(比如下拉進度條,selenium并沒有提供方法)

首先利用設定

j="window.scrollTo(100,450);"

window.scrollTo()方法用于設置瀏覽器窗口滾動條的水平和垂直位置。

第一個參數就是水平位置,第二個參數就是垂直位置。

然后再利用browser.execute_script(j)方法去執行js代碼即可。

15、Cookies的操作

實例:

selenium庫的使用方法

注意:以上browser都是我得命名,你可以修改成你的。

總結:以上很多方法我都沒有實例,關鍵是自己要敲代碼。

感謝各位的閱讀,以上就是“selenium庫的使用方法”的內容了,經過本文的學習后,相信大家對selenium庫的使用方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盈江县| 贵州省| 永春县| 潮州市| 上虞市| 东港市| 阿城市| 公主岭市| 通州市| 明光市| 平度市| 兰考县| 永川市| 新巴尔虎左旗| 龙川县| 庄河市| 中超| 枣阳市| 鹿泉市| 吉林市| 松阳县| 政和县| 左贡县| 普安县| 永昌县| 呼玛县| 杭锦旗| 满城县| 商洛市| 余庆县| 咸丰县| 抚远县| 峨山| 荥经县| 巩义市| 临猗县| 塘沽区| 旬阳县| 临沭县| 晋州市| 东安县|