亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

分享一個神器,Selenium 自動化測試工具

jimhs / 3550人閱讀

摘要:安裝的安裝就不再科普,自行百度。運行這段代碼,你會發(fā)現(xiàn)自動打開,并訪問了百度,在輸入框輸入了,緊接著跳轉(zhuǎn)到了搜索的結(jié)果頁。

最近寫項目的時候,用到了Selenium,一個 Web 端的自動化測試工具,直接運行在瀏覽器中,用來模擬用戶操作。

Selenium 不僅僅可以用作自動化測試,還有很多種玩法,比如 Python 的爬蟲,實現(xiàn)某商品的秒殺,甚至是頁游外掛腳本,只要是基于瀏覽器操作,只有你想不到,沒有 Selenium 做不到,就是這么強大!

直奔主題,我們來感受一下 Selenium。

安裝

Python 的安裝就不再科普,自行百度。

通過 pip 命令安裝 Selenium

pip install selenium
安裝瀏覽器驅(qū)動

Selenium 支持的瀏覽器很多,F(xiàn)irefox、Chrome、IE、Opera 等等。

作為一個程序員,想必大多常用的瀏覽器都是 Chrome,我的電腦是 Mac,安裝 Chrome 瀏覽器驅(qū)動,直接執(zhí)行 brew cask install chromedriver 即可。

更多 Selenium 瀏覽器驅(qū)動下載,請點擊。

示例

先來一段簡單的代碼。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
browser.find_element_by_id("kw").send_keys("php")
browser.find_element_by_id("kw").send_keys(Keys.ENTER)

運行這段代碼,你會發(fā)現(xiàn)自動打開 Chrome,并訪問了百度,在輸入框輸入了 php,緊接著跳轉(zhuǎn)到了搜索的結(jié)果頁。

常用方法 1. 頁面元素定位

Selenium 常用的元素定位方法

find_element_by_id()

find_element_by_class_name()

find_element_by_tag_name()

find_element_by_css_selector()

find_element_by_tag_name()

比如百度頁面的 HTML:

我們可以這樣定位

element = driver.find_element_by_id("kw")
element = driver.find_element_by_class_name("s_ipt")
element = driver.find_element_by_css_selector(".s_ipt")

獲取元素之后,就是針對于元素的操作了,簡單可以劃分兩類操作,鼠標事件和鍵盤事件等等。

2. 鼠標操作
element.click()  單擊;
element.context_click() 右擊;
element.double_click() 雙擊;
element.drag_and_drop() 拖動;
element.move_to_element() 鼠標懸停
3. 輸入和鍵盤事件

輸入文本:

element.send_keys("Hello world")

鍵盤操作:

element.send_keys(Keys.ENTER) 回車
element.send_keys(Keys.CONTROL,‘a(chǎn)’) 全選(Ctrl+A)
element.send_keys(Keys.CONTROL,‘c’) 復(fù)制(Ctrl+C)
element.send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X) 
element.send_keys(Keys.CONTROL,‘v’) 粘貼(Ctrl+V)
element.send_keys(Keys.F1) 鍵盤 F1
…… 等等
窗口切換
driver.switch_to_window("windowName")
# 獲取所有打開窗口句柄
all_handles = driver.window_handles

# 獲取當前窗口句柄
current_windows = driver.current_window_handle
頁面等待

現(xiàn)在很多項目都是前后端分離的,HTML 動態(tài)渲染,如果我們打開某頁面,直接選取元素操作,就會拋出異常,所以設(shè)置頁面等待是很有必要的。

等待分為兩種類型:顯式等待和隱式等待。

顯式等待: 針對頁面的某一元素,每隔一段時間檢測一次當前頁面元素是否存在,如果超過設(shè)置時間檢測不到則拋出異常

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

element = WebDriverWait(driver, 5, 0.5).until(
            EC.presence_of_element_located((By.ID, "kw"))
        )
element.send_keys("selenium")
driver.quit()

隱式等待: 并不針對頁面上的某一元素進行等待,腳本執(zhí)行到某個元素定位時,如果元素可以定位,則繼續(xù)執(zhí)行;如果元素定位不到,則它將以輪詢的方式不斷地判斷元素是否被定位,直到超出設(shè)置時長,拋出異常。

# 設(shè)置隱式等待為10秒
driver.implicitly_wait(10)

Selenium 還有更多的操作,比如設(shè)置瀏覽器 cookie、文件上傳、窗口截圖等待,這里就不多介紹了,有興趣的話,大家可以去看擴展閱讀。

女票再讓我?guī)退霘⑸唐?,再也不用傻傻等待,分分鐘?Selenium 寫個秒殺應(yīng)用有木有?。海?/p> 擴展閱讀

Selenium 教程

Selenium 官方 API

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/44737.html

相關(guān)文章

  • Google推出的爬蟲新神器:Pyppeteer,神擋殺神,佛擋殺佛!

    摘要:注意,是叫做,不是。兩款瀏覽器同根同源,它們有著同樣的,但配色不同,由藍紅綠黃四種顏色組成,而由不同深度的藍色構(gòu)成。另外是基于的新特性實現(xiàn)的,所以它的一些執(zhí)行也支持異步操作,效率相對于來說也提高了。是否響應(yīng)信號,一般是命令,默認是。 如果大家對 Python 爬蟲有所了解的話,想必你應(yīng)該聽說過 Selenium 這個庫,這實際上是一個自動化測試工具,現(xiàn)在已經(jīng)被廣泛用于網(wǎng)絡(luò)爬蟲中來應(yīng)對 ...

    Fundebug 評論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • 透過源碼看本質(zhì)-關(guān)于Selenium Webdriver 實現(xiàn)原理的一點思考和分享

    摘要:最近針對這個問題看了不少了文章和書籍,在加上一點自己的思考和整理,與大家一起分享,一起學(xué)習(xí)。本文將以為例進行說明。這個值表示的是訪問的。以為例可以看到,指令的部分包含了幾個組成部分請求方法。這一部分用來表示具體的指令。 作為一名使用Selenium開發(fā)UI自動化多年的工程師,一直都對Selenium Webdriver的實現(xiàn)原理感覺不是很清楚。怎么就通過腳本控制瀏覽器進行各種操作了呢?...

    Loong_T 評論0 收藏0
  • 記一次還可以搶救一下的爬蟲私活,求接盤!

    摘要:前言最近接了一個爬蟲的私活,收益頗豐。項目需求一個類似百度文庫的網(wǎng)站,要求給出獲得文章,以形式保存下來。但是這次需要保存到這不難,難在要求格式不變。文章都是以許多標簽組合在一起的。知情人請告知,感激不盡。 前言 最近接了一個爬蟲的私活,收益頗豐。自認為對爬蟲掌握的還算不錯,爬過很多國內(nèi)外網(wǎng)站,數(shù)據(jù)超過百萬,應(yīng)對過封IP、設(shè)驗證碼、假數(shù)據(jù)、強制登錄等反爬蟲手段。于是乎,我毫不猶豫的接下了...

    alanoddsoff 評論0 收藏0
  • 100天漲薪4k!從功能測試動化測試,我整理的超全學(xué)習(xí)指南!

    摘要:事實上,自動化測試是相對于手動的。減少人為的錯誤自動化測試是機器完成,不存在執(zhí)行過程中人為的疏忽和錯誤,測試設(shè)計完全決定了測試的質(zhì)量,可以降低減少人為造成的錯誤。而接口自動化測試,主要是對接口進行測試。 今年6月份,由于經(jīng)濟壓力讓我下定決心進階自動化測試,已經(jīng)24的我做了3年功能測試,坐標廣...

    TwIStOy 評論0 收藏0

發(fā)表評論

0條評論

jimhs

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<