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

Python+Selenium4瀏覽器交互_web自動(dòng)化(2)

這篇具有很好參考價(jià)值的文章主要介紹了Python+Selenium4瀏覽器交互_web自動(dòng)化(2)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

0. 上節(jié)內(nèi)容回顧

1 . 瀏覽器基本操作

1.1 啟動(dòng) 退出

1. 手動(dòng)安裝driver ,啟動(dòng)瀏覽器時(shí),需要傳遞2個(gè)參數(shù):

1.2 窗口設(shè)置

1.3 頁面導(dǎo)航

1.4 獲取頁面信息

1.5 頁面截圖

2. 瀏覽器的高級操作

2.1 窗口切換

2.2 操作Cookies

2.3 執(zhí)行JavaScript

今日內(nèi)容:瀏覽器交互(調(diào)整窗口大小、導(dǎo)航、獲取網(wǎng)頁數(shù)據(jù)、窗口切換、讀寫cookies、執(zhí)行js、處理alert)

0. 上節(jié)內(nèi)容回顧

  • selenium 有三大組件:其中核心是 webdriver
  • selenium webdriver 中有兩大對象:
    • 對瀏覽器的操作:WebDriver
    • 對元素的操作: WebElement
  • selenium 4 已經(jīng)發(fā)布,具有新的特性和語法
  • selenium 測試環(huán)境,可以手動(dòng)搭建,也可以自動(dòng)化搭建

1 . 瀏覽器基本操作

1.1 啟動(dòng) 退出

1. 手動(dòng)安裝driver ,啟動(dòng)瀏覽器時(shí),需要傳遞2個(gè)參數(shù):

  • service: 瀏覽器驅(qū)動(dòng)對象,driver的存放路徑 (自動(dòng)配置,可以省略service參數(shù))
  • options:瀏覽器參數(shù)對象

Python+Selenium4瀏覽器交互_web自動(dòng)化(2)

selenium 只接收 service options (重點(diǎn))
service options 才會接收其他的更多的參數(shù),具體接收什么參數(shù),不同瀏覽器,有不同的選項(xiàng)
Chrome 為例:
  • ChromeDriverhttps://chromedriver.chromium.org/capabilities
  • Chromehttps://peter.sh/experiments/chromium-command-line-switches/
如果不傳遞任何參數(shù),也是可以的(以默認(rèn)的方式啟動(dòng))
手動(dòng)退出
driver.quit()
自動(dòng)退出
with driver:
????????driver.get("https://baidu.com")
可以更優(yōu)雅的寫法
with webdriver . Chrome ( service = service , options = options ) as driver :
????????driver . get ( "https://baidu.com" )

關(guān)于瀏覽器自動(dòng)關(guān)閉

因?yàn)槭窃诤瘮?shù)內(nèi)執(zhí)行的瀏覽器操作,在函數(shù)執(zhí)行完畢之后,程序內(nèi)所有的步驟都結(jié)束了,關(guān)于這段程序的進(jìn)程也就結(jié)束了,瀏覽器包含在內(nèi)。

Python+Selenium4瀏覽器交互_web自動(dòng)化(2)

1.2 窗口設(shè)置

調(diào)用 webdriver 對象的方法
方法
作用
set_window_size(width, height)
設(shè)置窗口大小
get_window_size()
獲取窗口大小
set_window_position(x,y)
設(shè)置窗口位置
get_window_position()
獲取窗口位置
set_window_rect()
設(shè)置窗口大小 + 位置
get_window_rect()
獲取窗口大小 + 位置
maximize_window()
窗口最大化
minimize_window()
窗口最小化
fullscreen_window()
全屏
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)  # 啟動(dòng)瀏覽器
driver.get("https://www.baidu.com/")  # 訪問指定的頁面

#ele = driver.find_element(By.XPATH, '//*[@id="kw"]')
#ele.send_keys("百度一下?")
print(driver.get_window_size()) #獲取窗口大小
print(driver.get_window_position()) #獲取窗口位置
print(driver.get_window_rect()) #獲取窗口大小 + 位置
#driver.minimize_window() #窗口最小化
driver.fullscreen_window() #全屏
driver.set_window_size(900,600)
#driver.quit() #手動(dòng)退出,顯式退出

1.3 頁面導(dǎo)航

調(diào)用 webdriver 對象的方法
方法
作用
get(url)
跳轉(zhuǎn)到指定頁面
back()
返回上個(gè)頁面
forward()
前進(jìn)到下一個(gè)頁面
refresh()
刷新當(dāng)前頁面
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)  # 啟動(dòng)瀏覽器
driver.get("https://www.baidu.com/") # 訪問指定的頁面

driver.back() #回到空白頁面
driver.forward() # 前進(jìn)到百度
driver.refresh() # 刷新頁面

#driver.quit() #手動(dòng)退出,顯式退出

1.4 獲取頁面信息

UI 自動(dòng)化測試,斷言實(shí)際結(jié)果從哪來?
主要是 WebDriver 對象屬性
屬性
內(nèi)容
例子
name
瀏覽器名字
chrome
capabilities
瀏覽器能力
{'browserVersion': '95.0.463',..}
current_url
當(dāng)前網(wǎng)址
https://baidu.com
title
頁面 title
百度一下
page_source
HTML 源碼
<html><title> 百度一下 </title
current_window_handle
當(dāng)前窗口 ID
ANC-SJ2
window_handles
所有窗口 ID
['ANC-SJ2', 'S92-1C2']
switch_to
窗口切換
tab window alert 、 frame
timeouts
超時(shí)時(shí)間

window_handles 可以用來統(tǒng)計(jì)窗口的數(shù)量,或者切換窗口

switch_to 可以創(chuàng)建新窗口、切換iframe頁面、處理alert彈窗

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)  # 啟動(dòng)瀏覽器
driver.get("https://www.baidu.com/")  # 訪問指定的頁面

key_l = ["name", "capabilities", "current_url", "title", "current_window_handle", "window_handles",
         "switch_to", "timeouts"]
for key in key_l:  # 從列表中遍歷屬性
    print(key)
    print(getattr(driver, key))
    print("-" * 30)
# driver.quit() #手動(dòng)退出,顯式退出

1.5 頁面截圖

方法
作用
例子
get_screenshot_as_png()
截圖的二進(jìn)制內(nèi)容
b'\x89PNG\r\n\x1a\n\x..
get_screenshot_as_base64()
截圖的 base64 內(nèi)容
iVBORw0KGgoAAAAN...
get_screenshot_as_file(path)
截圖保存到文件
共同點(diǎn): 都是截圖
不同點(diǎn):對截圖處理
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)  # 啟動(dòng)瀏覽器
driver.get("https://www.baidu.com/")  # 訪問指定的頁面

b = driver.get_screenshot_as_png()  # 返回二進(jìn)制
print(b)
with open("a.png", "wb") as f:
    f.write(b)
print("*" * 30)

b64 = driver.get_screenshot_as_base64()  # 返回字符串
print(b64)
b = base64.b64decode(b64)  # 字符串轉(zhuǎn)二進(jìn)制
with open("b.png", "wb") as f:
    f.write(b)
print("*" * 30)

driver.get_screenshot_as_file("c.png") #截圖保存到文件

driver.quit() #手動(dòng)退出,顯式退出
有了截圖的功能,在自動(dòng)化測試就不用一直盯著瀏覽器了,可以使用無頭模式加速執(zhí)行
并在測試失敗的是,檢查截圖內(nèi)容

2. 瀏覽器的高級操作

2.1 窗口切換

方法
作用
例子
switch_to.alert
切換到彈窗
switch_to.active_element
切換到聚焦的元素
switch_to.frame('frame_name')
切換到 iframe
switch_to.new_window('window_type')
創(chuàng)建新窗口
switch_to.window('window_name')
切換到窗口
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)  # 啟動(dòng)瀏覽器
print("當(dāng)前頁面的id是",driver.current_window_handle)
print("當(dāng)前所有的窗口ID是",driver.window_handles)

driver.switch_to.new_window("tab") #創(chuàng)建tab
driver.switch_to.new_window("window") #創(chuàng)建windows
print("當(dāng)前頁面的id是",driver.current_window_handle)
print("當(dāng)前所有的窗口ID是",driver.window_handles)

#切換窗口
for win_id in driver.window_handles: #遍歷窗口ID
    driver.switch_to.window(win_id) #根據(jù)ID切換窗口
    print("當(dāng)前頁面ID是",driver.current_window_handle)
Python+Selenium4瀏覽器交互_web自動(dòng)化(2)
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)  # 啟動(dòng)瀏覽器
driver.get("http://118.24.147.95:8086/switch_to.html")  # 跳轉(zhuǎn)到測試頁面
# 1. 處理alert 彈窗
alert = driver.switch_to.alert  # js彈窗是阻塞型代碼
print(alert)
alert.accept()  # 點(diǎn)擊確定按鈕
# alert.dismiss() # 點(diǎn)擊取消按鈕
# alert.send_keys("~") # 向彈出輸入內(nèi)容

# 2.切換iframe
# 方法1. iframe 序號
# driver.switch_to.frame(0)  # 0表示第一個(gè)
# 方法2. iframe 元素本身
l = driver.find_elements(By.TAG_NAME, "iframe")  # 定位到所有的iframe元素
driver.switch_to.frame(l[0])  # 把元素傳遞進(jìn)行切換

ele = driver.find_element(By.CSS_SELECTOR, "h2")
print(ele)
1. 定位 ifarme 元素 (不管是什么元素,不管有多少元素,都是元素定位的問題)
2. 切換 frame
3. frame 中定位其他元素
4. 切回主窗口

2.2 操作Cookies

方法
作用
add_cookie(cookie:dict)
增加指定 cookie
get_cookie(name)
獲取指定 cookie
delete_cookie(name)
刪除指定 cookie
delete_all_cookies()
刪除 所有 cookies
get_cookies()
獲取 所有 cooki

Python+Selenium4瀏覽器交互_web自動(dòng)化(2)文章來源地址http://www.zghlxwxcb.cn/news/detail-405201.html

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)  # 啟動(dòng)瀏覽器
# http://118.24.147.95:8087/cookies 顯示cookies
# http://118.24.147.95:8087/cookies/set/a/1 設(shè)置cookie a=1
# cookie 一定是字符串
driver.get("http://118.24.147.95:8087/cookies/set/a/1") # 跳轉(zhuǎn)到測試頁面

driver.add_cookie({"name": "b", "value": "2"}) # 手動(dòng)添加cookie
driver.delete_cookie("a") # 手動(dòng)刪除

driver.refresh() # 刷新頁面,展示最新的cookie結(jié)果
print(driver.get_cookies()) # 獲取所有的cookie

#driver.quit()
cookie 完整內(nèi)容
[{'domain': '118.24.147.95', 'httpOnly': False, 'name': 'b', 'path': '/', 'secure': False, 'value': '2'}]

2.3 執(zhí)行JavaScript

selenium 本身有很多功能使用 JS 實(shí)現(xiàn)
特殊問題,我們可以考慮用 JS 解決
方法
作用
例子
pin_script(script, script_key=None)
暫存 JS 片段
unpin(script_key)
取消暫存
get_pinned_scripts()
查看所有暫存
execute_script (script, *args)
執(zhí)行 JS 代碼,或暫存的 JS
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)  # 啟動(dòng)瀏覽器
driver.execute_script("alert(1)") # 不需要返回值
driver.switch_to.alert.accept() # 點(diǎn)擊確定按鈕

a = driver.execute_script("return 1+1")  # 不需要返回值
print("1+1=", a)  # 返回值可以打印

a = driver.execute_script("return 1+arguments[0]", 100) # 傳遞參數(shù)
print("a = ", a)

ele = driver.find_element(By.TAG_NAME, "body")
driver.execute_script("console.log(arguments[0])", ele) # 傳遞元素

# driver.quit()
運(yùn)行結(jié)果:
Python+Selenium4瀏覽器交互_web自動(dòng)化(2)
總結(jié)
  • 瀏覽器的一般操作 :啟動(dòng)、退出、導(dǎo)航、獲取信息
  • 瀏覽器高級操作: 窗口切換、操作Cookies,執(zhí)行JS
  • 啟動(dòng)參數(shù):最大化、無頭模式

到了這里,關(guān)于Python+Selenium4瀏覽器交互_web自動(dòng)化(2)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(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)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

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

相關(guān)文章

  • 解決selenium4在部分電腦上運(yùn)行時(shí)報(bào)異常GPU process launch failed: error_code=18無法打開瀏覽器窗口

    我在臺式windows10上運(yùn)行的一點(diǎn)問題沒有的程序拷貝到同樣操作系統(tǒng)的筆記本上運(yùn)行就會報(bào)異常 剛開始一直是懷疑是沒有添加禁用gpu加速參數(shù)導(dǎo)致,后來加上去--disable-gpu后還是報(bào)該異常。 最后將所有常用參數(shù)一個(gè)個(gè)嘗試,添加--no-sandbox參數(shù)后解決。 示例:

    2024年02月11日
    瀏覽(78)
  • selenium4.15.2 報(bào)錯(cuò)Exception managing chrome: error sending request for url 和 打開Chrome瀏覽器自動(dòng)退出問題

    最近更新了一不小心更新了selenium4.15.2,導(dǎo)致每次運(yùn)行它都會主動(dòng)去國外官網(wǎng)請求一遍,因?yàn)樵L問不了國外網(wǎng)址,就加載特別慢 最后報(bào)錯(cuò) Exception managing chrome: error sending request for url (https://chromedriver.storage.googleapis.com/index.html),然后再運(yùn)行,一開始以為是webdriver版本和chrome版本

    2024年02月05日
    瀏覽(172)
  • 〖Python WEB 自動(dòng)化測試實(shí)戰(zhàn)篇⑨〗- 實(shí)戰(zhàn) - selenium 實(shí)現(xiàn)瀏覽器標(biāo)簽頁的切換

    訂閱 Python全棧白寶書-零基礎(chǔ)入門篇 可報(bào)銷! 白嫖入口-請點(diǎn)擊我。 推薦他人訂閱,可獲取扣除平臺費(fèi)用后的35%收益,文末名片加V! 說明:該文屬于 Python全棧白寶書專欄, 免費(fèi)階段訂閱數(shù)量4300+ , 購買任意白寶書體系化專欄可加入 TFS-CLUB 私域社區(qū)。 福利:加入社區(qū)的小伙

    2023年04月08日
    瀏覽(55)
  • Web自動(dòng)化Selenium-瀏覽器定制啟動(dòng)參數(shù)

    在自動(dòng)化測試過程中,為了達(dá)到某種效果,我們需要在初始化瀏覽器的時(shí)候做一些特殊的設(shè)置,如“阻止圖片加載”“阻止JavaScript執(zhí)行”等。這些需要Selenium的瀏覽器options(如ChromeOptions、FirefoxOptions)來幫助我們完成。 本節(jié)我們再來看一些options的常用屬性及方法。 ●optio

    2024年02月14日
    瀏覽(18)
  • Edge瀏覽器做web自動(dòng)化測試(selenium)

    Edge瀏覽器做web自動(dòng)化測試(selenium)

    查看瀏覽器設(shè)置看edge瀏覽器版本 ? 下載edge瀏覽器對應(yīng)版本驅(qū)動(dòng) Microsoft Edge WebDriver - Microsoft Edge Developer ? 下載完畢后壓縮包 ? ?后面請參考selenium使用 selenium自動(dòng)化測試(初窺門徑)_鄧霖濤的博客-CSDN博客 在導(dǎo)入selenium的maven 相關(guān)依賴可以用選擇edge的驅(qū)動(dòng) ? 測試代碼如下:? 執(zhí)

    2024年02月12日
    瀏覽(18)
  • 使用 Web HID API 在瀏覽器中進(jìn)行HID設(shè)備交互(純前端)

    使用 Web HID API 在瀏覽器中進(jìn)行HID設(shè)備交互(純前端)

    最近在搞HID透傳 《STM32 USB使用記錄:HID類設(shè)備(后篇)》 。 市面上的各種測試工具都或多或少存在問題,所以就自己寫一個(gè)工具進(jìn)行測試。目前來說純前端方案編寫這個(gè)工具應(yīng)該是最方便的,這里對 Web HID API 相關(guān)內(nèi)容做個(gè)記錄。 Web HID API 相關(guān)內(nèi)容參考如下: https://develop

    2024年01月19日
    瀏覽(26)
  • Selenium控制已運(yùn)行的Edge和Chrome瀏覽器——在線控制 | 人機(jī)交互(詳細(xì)啟動(dòng)步驟和bug記錄)

    Selenium控制已運(yùn)行的Edge和Chrome瀏覽器——在線控制 | 人機(jī)交互(詳細(xì)啟動(dòng)步驟和bug記錄)

    說明:本記錄是在Windows系統(tǒng)上執(zhí)行的! 起因是:博導(dǎo)要求統(tǒng)計(jì)一下國內(nèi)某個(gè)領(lǐng)域的專家情況,統(tǒng)計(jì)主持國家自然科學(xué)基金的副教授和教授都有哪些大牛! 于是:本人去[NSFC]:https://kd.nsfc.cn/ 下載全部的歷史基金項(xiàng)目書。。。。工作量太大就……半自動(dòng)化實(shí)現(xiàn)吧!??! 無論是

    2024年04月10日
    瀏覽(96)
  • 軟件測試/測試開發(fā)丨Selenium Web自動(dòng)化多瀏覽器處理

    軟件測試/測試開發(fā)丨Selenium Web自動(dòng)化多瀏覽器處理

    本文為霍格沃茲測試開發(fā)學(xué)社學(xué)員學(xué)習(xí)筆記分享 原文鏈接:https://ceshiren.com/t/topic/27185 用戶使用的瀏覽器(firefox,chrome,IE 等) web 應(yīng)用應(yīng)該能在任何瀏覽器上正常的工作,這樣能吸引更多的用戶來使用 是跨不同瀏覽器組合驗(yàn)證網(wǎng)站或 web 應(yīng)用程序功能的過程 是兼容性測試的一個(gè)

    2024年02月09日
    瀏覽(27)
  • python用selenium打開瀏覽器后秒關(guān)閉瀏覽器-解決方法

    python用selenium打開瀏覽器后秒關(guān)閉瀏覽器-解決方法

    學(xué)習(xí)selenium的時(shí)候,上手第一個(gè)腳本發(fā)現(xiàn)成功打開瀏覽器后,代碼執(zhí)行完畢瀏覽器又秒關(guān)閉了,代碼如下: 1、檢查代碼,代碼中沒有寫driver.quit()或driver.close()方法,也沒有其它錯(cuò)誤提示; 2、檢查版本號,瀏覽器版本號,驅(qū)動(dòng)版本號,確認(rèn)版本號沒有問題; 3、最后找到解決

    2024年02月11日
    瀏覽(95)
  • selenium+python切換瀏覽器窗口

    selenium在當(dāng)前瀏覽器頁面打開了新的窗口,此時(shí)如果要聚焦到新開的瀏覽器窗口,就需要切換到新的窗口,切換窗口的操作,具體selenium+python示例如下:

    2024年02月15日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包