国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Selenium介紹及基本使用方法

這篇具有很好參考價值的文章主要介紹了Selenium介紹及基本使用方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Selenium是一個開源、免費(fèi)、簡單、靈活,對Web瀏覽器支持良好的自動化測試工具,在UI自動化、爬蟲等場景下是十分實(shí)用的,能夠熟練掌握并使用Selenium工具可以大大的提高效率。

Selenium簡介

Selenium支持多平臺、多瀏覽器、多語言去實(shí)現(xiàn)自動化測試,是一個開源和可移植的Web測試框架,支持并行測試執(zhí)行,從而減少了時間并提高了測試效率。利用它,我們可以編寫相關(guān)的自動化程序,讓程序完全像人一樣在瀏覽器里面操作Web界面,比如模擬鼠標(biāo)點(diǎn)擊、模擬鍵盤輸入等等。不但能夠操作Web界面,還能從Web中獲取信息,并且相對來說,使用Selenium來獲取信息更加簡單,它的基本原理是我們編寫自動化程序之后利用瀏覽器驅(qū)動直接對瀏覽器進(jìn)行操作,只要我們用戶能在瀏覽器上獲得的信息使用Selenium都可以獲得。

selenium debuggeraddress,測試開發(fā),軟件測試,selenium,測試工具

環(huán)境準(zhǔn)備

下載瀏覽器驅(qū)動,注意驅(qū)動版本與瀏覽器版本要一致

將瀏覽器驅(qū)動路徑添加到環(huán)境變量path中

安裝Selenium包pip install selenium

快速入門

使用selenium實(shí)現(xiàn)控制瀏覽器打開百度首頁,搜索Alipay。

from selenium import webdriver # 導(dǎo)入webdriver
import time
driver = webdriver.Chrome() # 獲取瀏覽器驅(qū)動
driver.get(" http://www.baidu.com") # 打開百度首頁
input_box = driver.find_element_by_id('kw') # 獲取首頁輸入框元素
input_box.send_keys('Alipay') # 向輸入框中輸入內(nèi)容
search_button = driver.find_element_by_id('su') # 獲取首頁搜索按鈕元素
search_button.click() # 點(diǎn)擊搜索按鈕
time.sleep(5)
driver.quit() # 關(guān)閉驅(qū)動

selenium debuggeraddress,測試開發(fā),軟件測試,selenium,測試工具

Selenium-API操作【文末免費(fèi)分享Selenium自動化測試學(xué)習(xí)資源】

元素等待

顯示等待

設(shè)置一個超時時間,每過一段時間就去檢測一次該元素是否存在,如果存在則執(zhí)行后續(xù)內(nèi)容,如果超過最大時間(超時時間)則拋出超時異常(TimeoutException)。顯示等待需要使用 WebDriverWait,同時配合 until 或 not until 。

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get('Http://www.baidu.com')

# 每隔0.5秒檢測一次元素存不存在,5秒內(nèi)沒找到拋出異常

element = WebDriverWait(driver, 5, 0.5).until(

expected_conditions.presence_of_element_located((By.ID, 'kd')), message='元素未找到')

隱式等待

隱式等待也是指定一個超時時間,如果超出這個時間指定元素還沒有被加載出來,就會拋出 NoSuchElementException 異常。除了拋出的異常不同外,還有一點(diǎn),隱式等待是全局性的,即運(yùn)行過程中,如果元素可以定位到,它不會影響代碼運(yùn)行,但如果定位不到,則它會以輪詢的方式不斷地訪問元素直到元素被找到,若超過指定時間,則拋出異常。使用 implicitly_wait() 來實(shí)現(xiàn)隱式等待,使用難度相對于顯式等待要簡單很多。

driver.implicitly_wait(5)

強(qiáng)制等待

使用 time.sleep() 強(qiáng)制等待,設(shè)置固定的休眠時間,等待元素加載,對于代碼的運(yùn)行效率會有影響。

元素定位

Selenium提供了8種基本元素定位的方法,分別是id,name,class name,tag name,link text,partial link text,xpath,css selector,其中id,name,class name,tag name是根據(jù)元素的標(biāo)簽或元素的屬性來進(jìn)行定位;link text,partial link text是根據(jù)超鏈接的文本來進(jìn)行定位;xpath為元素路徑定位;css為選擇器定位(樣式定位)。

element = driver.find_element_by_id('kw') # 通過id屬性獲取元素

element = driver.find_element_by_name('wd') # 通過name屬性獲取元素

element = driver.find_element_by_class_name('input') # 通過class屬性獲取元素

element = driver.find_element_by_tag_name('input') # 通過標(biāo)簽名獲取元素

element = driver.find_element_by_link_text('視頻') # 通過鏈接文本值獲取元素

element = driver.find_element_by_partial_link_text('視')# 通過部分鏈接文本值獲取元素

element = driver.find_element_by_xpath("http://*[@id='kw']") # 通過Xpath獲取元素

element = driver.find_element_by_css_selector('#kw') # 通過CSS選擇器獲取元素

元素操作

定位到元素獲取到元素對象之后,就可以對元素進(jìn)行我們想要的操作了,Selenium提供了許多API供我們操作元素,常用的操作有點(diǎn)擊、輸入、清除、獲取元素坐標(biāo)值、獲取元素寬高值、元素屬性值、檢查元素是否被選中。

elemnet.click() # 點(diǎn)擊元素

element.send_keys('武漢') # 輸入內(nèi)容

element.clear() # 清除內(nèi)容

element.location.get('x') # 獲取元素左上角X軸坐標(biāo)

element.location.get('y') # 獲取元素左上角Y軸坐標(biāo)

element.size.get('width') # 獲取元素寬度

element.size.get('height') # 獲取元素高度

element.is_selected() # 元素是否被選中

鼠標(biāo)操作

常見的鼠標(biāo)操作有:點(diǎn)擊、右擊、雙擊、懸停、拖拽等,對于這些鼠標(biāo)操作Selenium都封裝了相應(yīng)的操作方法

在Selenium中將操作鼠標(biāo)的方法封裝在ActionChains類中,在ActionChains類中所有提供的鼠標(biāo)事件方法,在調(diào)用的時候所有的行為都存儲在ActionChains對象中,而perform()方法就是真正去執(zhí)行所有的鼠標(biāo)事件。

from selenium.webdriver.common.action_chains import ActionChains # 導(dǎo)包

actionChains = ActionChains(driver) # 實(shí)例化ActionChains對象

actionChains.move_to_element(element).perform() # 鼠標(biāo)懸停

actionChains.drag_and_drop(elementA, elementB).perform() # 鼠標(biāo)拖拽

actionChains.context_click(element).perform() # 鼠標(biāo)右擊

actionChains.double_click(element).perform() # 鼠標(biāo)雙擊

鍵盤操作

Selenium中把鍵盤的按鍵都封裝在Keys類中, 模擬鍵盤上一些按鍵或者組合鍵的輸入,使用send_Keys+http://Keys.XXX實(shí)現(xiàn)鍵盤上的組合按鍵如:Ctrl+C 、Ctrl+V。

from selenium.webdriver.common.keys import Keys # 導(dǎo)包

element.send_keys(Keys.BACK_SPACE) # 模擬按下退格鍵

element.send_keys(Keys.CONTROL, 'a') # 模擬按下Ctrl+A

element.send_keys(Keys.CONTROL, 'x') # 模擬按下Ctrl+X

element.send_keys(Keys.CONTROL, 'v') # 模擬按下Ctrl+V

瀏覽器操作

selenium同樣提供了相應(yīng)的API用于針對瀏覽器的操作,常用的有最大化瀏覽器窗口,設(shè)置瀏覽器窗口大小,設(shè)置瀏覽器的位置,控制瀏覽器前進(jìn)后退,頁面刷新。

driver.maximize_window() # 瀏覽器窗口最大化

driver.set_window_size(800, 800) # 瀏覽器窗口寬800 高800

driver.set_window_rect(300, 0) # 瀏覽器位置(300,0)

driver.back() # 瀏覽器后退

driver.forward() # 瀏覽器前進(jìn)

driver.refresh() # 刷新頁面

其他操作

標(biāo)簽頁

driver.get_screenshot_as_file('./baidu.png') # 頁面截圖

driver.close() # 關(guān)閉當(dāng)前標(biāo)簽頁

driver.quit() # 關(guān)閉所有標(biāo)簽頁

在某個頁面點(diǎn)擊鏈接打開了一個新的標(biāo)簽頁,此時selenium是無法定位到新標(biāo)簽頁的元素。這就涉及到句柄的概念了,句柄就是標(biāo)簽頁對象的唯一標(biāo)識,每個標(biāo)簽頁都有自己的句柄,可以通過句柄來實(shí)現(xiàn)標(biāo)簽頁的切換,從而定位到對應(yīng)標(biāo)簽頁的元素。

handles = driver.window_handles # 獲取所有標(biāo)簽頁的句柄

driver.switch_to.window(handles[1]) # 切換到指定句柄標(biāo)簽頁

啟動參數(shù)

Chrome Options是一個配置chrome啟動時屬性的類,通過這個參數(shù)我們可以為Chrome添加啟動參數(shù)

設(shè)置 chrome 二進(jìn)制文件位置 (binary_location)

添加啟動參數(shù) (add_argument)

添加擴(kuò)展應(yīng)用 (add_extension, add_encoded_extension)

添加實(shí)驗(yàn)性質(zhì)的設(shè)置參數(shù) (add_experimental_option)

設(shè)置調(diào)試器地址 (debugger_address)

Chrome Options常用的行為一般有以下幾種:

禁止圖片和視頻的加載:提升網(wǎng)頁加載速度。

添加代理:用于FQ訪問某些頁面,或者應(yīng)對IP訪問頻率限制的反爬技術(shù)。

使用移動頭:訪問移動端的站點(diǎn),一般這種站點(diǎn)的反爬技術(shù)比較薄弱。

添加擴(kuò)展:像正常使用瀏覽器一樣的功能。

設(shè)置編碼:應(yīng)對中文站,防止亂碼。

阻止JavaScript執(zhí)行

在UI自動化中打開瀏覽器前可以加入對瀏覽器的選項配置,通過設(shè)置不同的參數(shù),可以修改瀏覽器的默認(rèn)行為。

from selenium import webdriver

options = webdriver.ChromeOptions() # 實(shí)例化一個啟動參數(shù)對象

options.add_argument('--headless') # 設(shè)置瀏覽器瀏覽器不提供可視化頁面

options.add_argument('lang=zh_CN.UTF-8') # 設(shè)置編碼

options.add_argument('--disable-infobars') # 禁止策略化

options.add_argument('--no-sandbox') # 解決DevToolsActivePort文件不存在的報錯

options.add_argument('window-size=1920x1080') # 指定瀏覽器分辨率

options.add_argument('--disable-gpu') # 谷歌文檔提到需要加上這個屬性來規(guī)避bug

options.add_argument('--incognito') # 隱身模式(無痕模式)

options.add_argument('--disable-javascript') # 禁用javascript

options.add_argument('--start-maximized') # 最大化運(yùn)行(全屏窗口),不設(shè)置,取元素會報錯

options.add_argument('--disable-infobars') # 禁用瀏覽器正在被自動化程序控制的提示

options.add_argument('--hide-scrollbars') # 隱藏滾動條, 應(yīng)對一些特殊頁面

options.add_argument('blink-settings=imagesEnabled=false') # 不加載圖片, 提升速度

options.add_argument('User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36

') # 設(shè)置UA請求頭

driver = webdriver.Chrome(chrome_options=options)

執(zhí)行JS腳本

有些情況下,selenium提供的API無法完成對應(yīng)的操作或者操作比較麻煩,此時可以借助JS腳本來實(shí)現(xiàn),例如執(zhí)行滑動滾動條。

js ='window.scrollTo(0,100)' # 要執(zhí)行的JS腳本語句

driver.execute_script(js) # 執(zhí)行JS腳本

Frame切換

通常大多數(shù)網(wǎng)站頁面都會使用到frame嵌套,這時即使frame嵌套頁面的內(nèi)容展示出來了,我們依然無法直接定位到frame里的元素,例如像優(yōu)酷這種登錄窗口

selenium debuggeraddress,測試開發(fā),軟件測試,selenium,測試工具

?此時若想操作frame里的元素,需要先切換到frame里再進(jìn)行定位。

driver.switch_to.frame('alibaba-login-box') # 且換到指定frame

driver.switch_to.default_content() # 切回默認(rèn)頁面

隱藏指紋特征

使用slenium啟動的瀏覽器,大多數(shù)都會被網(wǎng)站通過一些指紋特征監(jiān)測到,識別到爬蟲行為,就會拒絕selenium的操作,如何避免這種情況,關(guān)鍵點(diǎn)在于如何在瀏覽器檢測之前將這些特征進(jìn)行隱藏,事實(shí)上,前人已經(jīng)為我們鋪好了路,解決這個問題的關(guān)鍵,實(shí)際就是一個 stealth.min.js 文件,這個文件是給 puppeteer 用的,在 Python 中使用的話需要單獨(dú)執(zhí)行這個文件,該文件獲取方式需要安裝 node.js ,終端執(zhí)行 npx extract-stealth-evasions下載該文件,并在操作瀏覽器前加上如下代碼。

selenium debuggeraddress,測試開發(fā),軟件測試,selenium,測試工具

with open('stealth.min.js') as f:      js = f.read()  driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {'source': js})

結(jié)語

本文只是簡單的介紹了selenium+python的安裝使用,以及一些基礎(chǔ)常用的API操作,還有很多高級操作、用法需要更深入的了解學(xué)習(xí)。實(shí)際運(yùn)用的話可能還需要與其他框架、工具整合使用,這些都是需要經(jīng)過更深層次的理解與學(xué)習(xí)。

Python接口自動化測試零基礎(chǔ)入門到精通(2023最新版)文章來源地址http://www.zghlxwxcb.cn/news/detail-764759.html

到了這里,關(guān)于Selenium介紹及基本使用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 自動化測試工具Selenium的基本使用方法,面試字節(jié)跳動的前端工程師該怎么準(zhǔn)備

    自動化測試工具Selenium的基本使用方法,面試字節(jié)跳動的前端工程師該怎么準(zhǔn)備

    8.小結(jié) 上述均可以改寫成find_element(By.ID,‘kw’)的形式 find_elements_by_xxx的形式是查找到多個元素,結(jié)果為列表 import time from selenium import webdriver#驅(qū)動瀏覽器 from selenium.webdriver import ActionChains #滑動 from selenium.webdriver.common.by import By #選擇器 from selenium.webdriver.common.by import By #按照什

    2024年04月16日
    瀏覽(25)
  • selenium的其它使用方法

    1. selenium標(biāo)簽頁的切換 當(dāng)selenium控制瀏覽器打開多個標(biāo)簽頁時,如何控制瀏覽器在不同的標(biāo)簽頁中進(jìn)行切換呢?需要我們做以下兩步: 獲取所有標(biāo)簽頁的窗口句柄 利用窗口句柄字切換到句柄指向的標(biāo)簽頁 這里的窗口句柄是指:指向標(biāo)簽頁對象的標(biāo)識 關(guān)于句柄請課后了解更多

    2024年01月25日
    瀏覽(50)
  • 【Python爬蟲】selenium的詳細(xì)使用方法

    【Python爬蟲】selenium的詳細(xì)使用方法

    selenium是一個用于web應(yīng)用測試的工具,selenium所做的測試會直接運(yùn)行在瀏覽器中,就像真人進(jìn)行操作一樣,像是打開瀏覽器,輸入賬號密碼登錄等等。目前selenium支持大部分的瀏覽器,例如:IE,Mozilla Firefox,Safari,Google Chrome,Opera,Edge等等瀏覽器,selenium是一個相當(dāng)成功的開

    2024年02月07日
    瀏覽(24)
  • selenium常見等待機(jī)制及其特點(diǎn)和使用方法

    selenium常見等待機(jī)制及其特點(diǎn)和使用方法

    目錄 1、強(qiáng)制等待? 2、隱式等待? 3、顯示等待? 強(qiáng)制等待是在程序中直接調(diào)用Thread.sleep(timeout)?,來完成的, 該用法的優(yōu)點(diǎn)是使用起來方便,語法也比較簡單,缺點(diǎn)就是需要強(qiáng)制等待固定的時間,可能會造成測試的時間過長。 引入等待的原因是很多時候,程序運(yùn)行的速度是大

    2024年02月14日
    瀏覽(34)
  • 關(guān)于Python中使用selenium八大定位方法

    1.通過id元素定位? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.find_element_by_id(\\\"id\\\") 2.通過name元素定位? ? ? ? ? ? ? ? ? ? ? ?.find_element_by_name(\\\"name\\\")?? ? 3.通過路徑導(dǎo)航定位? ? ? ? ? ? ? ? ? ? ? ? ?.find_element_by_xpath(\\\"xpath\\\") ?? ????? 說明 :右鍵所選的網(wǎng)頁元素,點(diǎn)擊copy,點(diǎn)擊copy ,x

    2023年04月23日
    瀏覽(34)
  • C#使用Selenium WebDriver模擬人工操作網(wǎng)頁方法

    目錄 1.Selenium WebDriver使用方法 2.Selenium WebDriver安裝方法 1.Selenium WebDriver使用方法 在C#中模擬人工操作網(wǎng)頁通常需要使用Web自動化工具或庫來實(shí)現(xiàn)。一種常用的方式是使用Selenium WebDriver,它是一個用于自動化Web瀏覽器操作的工具,支持多種瀏覽器,包括Chrome、Firefox、Edge等。以

    2024年02月06日
    瀏覽(26)
  • Python網(wǎng)頁抓取- python selenium使用方法和代碼示例

    Selenium可以模擬網(wǎng)頁操作,抓取頁面內(nèi)容,主要通過webdriver模塊實(shí)現(xiàn),為了方便理解,按照實(shí)例的操作步驟逐一介紹(函數(shù)參數(shù)不具體展開,參考下面代碼實(shí)例即可理解): 獲取browser實(shí)例 通過webdriver.Chorme(), webdriver.Edge(), webdriver.Firefox(), 來獲取browser實(shí)例: browser = webdriver.C

    2024年01月23日
    瀏覽(48)
  • 使用Selenium對網(wǎng)頁元素進(jìn)行定位的諸種方法!

    使用Selenium對網(wǎng)頁元素進(jìn)行定位的諸種方法!

    使用Selenium進(jìn)行自動化操作,首先要做的就是通過webdriver的get()方法打開一個URL鏈接。 在打開鏈接,完成頁面加載之后,就可以通過Selenium提供的接口,在頁面上進(jìn)行各種操作了,下面我們來了解一下如何在查找元素。 在上一篇的示例中,我們就演示了如何通過find_element_by_

    2024年04月10日
    瀏覽(20)
  • 【W(wǎng)indows 常用工具系列 5 -- Selenium IDE的使用方法 】

    【W(wǎng)indows 常用工具系列 5 -- Selenium IDE的使用方法 】

    Selenium是一個用于Web應(yīng)用程序測試的工具。Selenium測試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。 Selenium家庭成員有三個,分別是Selenium WebDriver、Selenium IDE和Selenium Grid。 Selenium IDE 介紹 Selenium IDE(集成開發(fā)環(huán)境)是一個用于自動化網(wǎng)頁應(yīng)用程序的測試工具。以下是一

    2024年02月13日
    瀏覽(22)
  • valgrind基本功能介紹、基礎(chǔ)使用方法說明 valgrind基本功能介紹、基礎(chǔ)使用方法說明

    valgrind基本功能介紹、基礎(chǔ)使用方法說明_valgrind使用方法_HNU Latecomer的博客-CSDN博客 拷貝效果不好,請看原文。 1、Valgrind概述 Valgrind是一套Linux下,開放源代碼(GPL V2)的仿真調(diào)試工具的集合。 Valgrind由內(nèi)核(core)以及基于內(nèi)核的其他調(diào)試工具組成。內(nèi)核類似于一個框架(f

    2024年02月07日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包