最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python利用Selenium實(shí)現(xiàn)彈出框的處理

 更新時(shí)間:2022年06月09日 08:40:18   作者:渴望力量的哈士奇  
經(jīng)常出現(xiàn)在網(wǎng)頁(yè)上的基于JavaScript實(shí)現(xiàn)的彈出框有三種,分別是?alert、confirm、prompt?。本文主要是學(xué)習(xí)如何利用selenium處理這三種彈出框,感興趣的可以了解一下

現(xiàn)如今經(jīng)常出現(xiàn)在網(wǎng)頁(yè)上的基于 JavaScript 實(shí)現(xiàn)的彈出框有三種,分別是 alert、confirm、prompt 。該章節(jié)主要是學(xué)習(xí)如何利用 selenium 處理這三種彈出框。奧利給,沖!

JavaScript三種彈出對(duì)話框的簡(jiǎn)單介紹

JavaScript的三種對(duì)話框是通過(guò)調(diào)用 "window對(duì)象" 的三個(gè)方法 "alert()"、"confirm()" 、"prompt()" 來(lái)獲得,我們可以利用這些對(duì)話框來(lái)完成 "js" 的輸入和輸出,實(shí)現(xiàn)與用戶進(jìn)行交互的js代碼。

下面就來(lái)簡(jiǎn)單的了解一下這三種對(duì)話框吧。

alert() - 警告框

alert 是一個(gè)警告框,表現(xiàn)為直接彈出一個(gè)提示窗,該提示窗只有一個(gè)按鈕確定按鈕,點(diǎn)擊 確定 按鈕后無(wú)返回值;alert 警告框經(jīng)常被用于確保用戶可以得到某些信息。當(dāng)警告框出現(xiàn)后,用戶需要點(diǎn)擊確定按鈕才能繼續(xù)進(jìn)行操作。語(yǔ)法:alert("文本") 。

alert 警告框代碼示例如下:

<html>
    <head>
        <title>html頁(yè)面 - alert</title>
        <a id="tooltip" href="#" data-toggle="tooltip" title="This is alert" onclick="alert(this.title);">點(diǎn)擊我,彈出 alert</a>
    </head>
</html>

confirm() - 確認(rèn)框

confirm 是確認(rèn)框,它有兩個(gè)按鈕,確定 與 取消 ,返回 truefalse 。確認(rèn)框用于讓用戶可以驗(yàn)證或者接受某些信息。當(dāng)確認(rèn)框出現(xiàn)后,用戶需要點(diǎn)擊確定或者取消按鈕才能繼續(xù)進(jìn)行操作。如果用戶點(diǎn)擊確認(rèn),那么返回值為 true。如果用戶點(diǎn)擊取消,那么返回值為 false。 語(yǔ)法:confirm("文本")

confirm 確認(rèn)框代碼示例如下:

<html>
	<head>
		<title>confirm</title>
	</head>
	<body>
執(zhí)行 "選擇" 后顯示的結(jié)果
		<script language="JavaScript">
			

			if(confirm("準(zhǔn)備好了么?")){
				alert("Go!");
			}
			else{
				alert("Hold on!");
			}
		</script>
	</body>
</html>

cprompt() - 提示框

prompt 是提示框,它會(huì)返回輸入框輸入的消息,或者其默認(rèn)值;提示框經(jīng)常用于提示用戶在進(jìn)入頁(yè)面前輸入某個(gè)值。當(dāng)提示框出現(xiàn)后,用戶需要輸入某個(gè)值,然后點(diǎn)擊確認(rèn)或取消按鈕才能繼續(xù)操縱。如果用戶點(diǎn)擊確認(rèn),那么返回值為輸入的值。如果用戶點(diǎn)擊取消,那么返回值為 null。語(yǔ)法:prompt("文本","默認(rèn)值")

prompt 提示框代碼示例如下:

<html>
  <head>
  </head>
  <body>
    <script language='JavaScript' type="text/javascript" >
      var aa= prompt("What's your name?","Husky");document.write("Welcome to my world, "+aa+"<br>")
    </script>
  </body>
</html>

以上就是比較常用的三種彈出層的原生 JavaScript 組件。

selenium 處理彈出對(duì)話框的常用方法

常用方法如下:

  • text:返回 alert、confirm、prompt 里面的文字信息
  • accept:接受
  • dismiss:取消
  • send_keys:向 prompt 里面輸入文字

selenium 處理 alert() 彈窗

本地 alert.html 彈窗頁(yè)面如下:

代碼示例如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動(dòng) Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/alert.html')   # 打開(kāi)本地的 "alert.html" 文件
sleep(1)
driver.find_element_by_id('tooltip').click()          # 點(diǎn)擊頁(yè)面 id='tooltip' 的元素(會(huì)彈出alert)
sleep(1)
alert = driver.switch_to.alert      # 選擇 alert
print(alert.text)                   # 打印輸出 alert 的內(nèi)容
alert.accept()                      # 針對(duì) alert 執(zhí)行 accept(接受)方法
sleep(2)

driver.quit()

運(yùn)行結(jié)果如下:

selenium 處理 confirm() 彈窗

本地 confirm.html 彈窗頁(yè)面如下:

代碼示例如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動(dòng) Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化

driver.get('file:///Users/workspace/WEB_TEST_HTML/confirm.html')   # 打開(kāi)本地的 "alert.html" 文件
sleep(1)
confirm = driver.switch_to.alert        # 不管是 alert 還是 confirm、cprompt ,"switch_to" 的方式是一樣的。
print(confirm.text)    # 打印輸出 "confirm" 的內(nèi)容
sleep(1)
confirm.dismiss()      # 針對(duì) confirm 執(zhí)行 dismiss(取消)方法
sleep(1)
alert = driver.switch_to.alert      # 選擇 confirm 執(zhí)行 accept(接受)方法后的 alert
print(alert.text)      # 打印輸出 alert 的內(nèi)容
sleep(1)
alert.accept()         # 針對(duì) alert 執(zhí)行 accept(接受)方法
sleep(1)

driver.quit()

運(yùn)行結(jié)果如下:

上文的腳本中,我們通過(guò) switch_to 的方法選擇 alert 略顯得麻煩一些,能不能直接通過(guò) confirm 把它當(dāng)成一個(gè)來(lái)處理呢?嘗試一下看看…

代碼示例如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動(dòng) Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化

driver.get('file:///Users/workspace/WEB_TEST_HTML/confirm.html')   # 打開(kāi)本地的 "alert.html" 文件
sleep(1)
confirm = driver.switch_to.alert        # 不管是 alert 還是 confirm、cprompt ,"switch_to" 的方式是一樣的。
print(confirm.text)    # 打印輸出 "confirm" 的內(nèi)容
sleep(1)
confirm.dismiss()      # 針對(duì) confirm 執(zhí)行 dismiss(取消)方法
sleep(1)
print(confirm.text)      # 打印輸出 alert 的內(nèi)容
sleep(1)
confirm.accept()         # 針對(duì) confirm 執(zhí)行 accept(接受)方法
sleep(1)

driver.quit()

運(yùn)行結(jié)果如下:

從這里我們可以發(fā)現(xiàn),不管彈出多少個(gè) alert ,都可以使用同一個(gè) switch_to 的結(jié)果一起來(lái)做后續(xù)的操作,不需要不斷的去 switch_to 。因?yàn)樗且粋€(gè)系統(tǒng)組件,不管它是什么形態(tài),都可以這樣去支持。

selenium 處理 prompt() 彈窗

OK,接下來(lái)還剩下左后一個(gè) 彈窗組件 - prompt(),頁(yè)面如下,有一個(gè)輸入框,兩個(gè)按鈕,可以選擇確定或取消。

代碼示例如下:

# coding:utf-8

from time import sleep
from selenium import webdriver


driver = webdriver.Chrome()     # 啟動(dòng) Chrome瀏覽器的 driver
driver.maximize_window()        # Chrome 瀏覽器最大化

driver.get('file:///Users/workspace/WEB_TEST_HTML/prompt.html')   # 打開(kāi)本地的 "alert.html" 文件
sleep(1)
prompt = driver.switch_to.alert
print(prompt.text)
sleep(1)
prompt.send_keys('Husky I love U')      # "prompt.html" 文件默認(rèn)輸入框里傳入的是 "Husky" ,這里我們傳入 "Husky I love U"
prompt.accept()
sleep(1)

driver.quit()

運(yùn)行結(jié)果如下:

從上面的動(dòng)圖中我們可以看到打印輸出的內(nèi)容并沒(méi)有我們輸入的內(nèi)容,與之前文章的 send_keys 不一樣,這是因?yàn)樗?JavaScript 原生的東西。既然是原生的組件,我們是看不到它的輸入過(guò)程的,只能是通過(guò) webdriver 來(lái)控制它的底層來(lái)改變輸入的元素內(nèi)容。所以雖然輸入正確,返回也正確,但是在過(guò)程中是看不出來(lái)的。

以上就是Python利用Selenium實(shí)現(xiàn)彈出框的處理的詳細(xì)內(nèi)容,更多關(guān)于Python Selenium彈出框的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • django ModelForm修改顯示縮略圖 imagefield類(lèi)型的實(shí)例

    django ModelForm修改顯示縮略圖 imagefield類(lèi)型的實(shí)例

    今天小編就為大家分享一篇django ModelForm修改顯示縮略圖 imagefield類(lèi)型的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Pytorch 中的optimizer使用說(shuō)明

    Pytorch 中的optimizer使用說(shuō)明

    這篇文章主要介紹了Pytorch 中的optimizer使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • python 循環(huán)讀取txt文檔 并轉(zhuǎn)換成csv的方法

    python 循環(huán)讀取txt文檔 并轉(zhuǎn)換成csv的方法

    今天小編就為大家分享一篇python 循環(huán)讀取txt文檔 并轉(zhuǎn)換成csv的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 對(duì)python中dict和json的區(qū)別詳解

    對(duì)python中dict和json的區(qū)別詳解

    今天小編就為大家分享一篇對(duì)python中dict和json的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 機(jī)器學(xué)習(xí)python實(shí)戰(zhàn)之手寫(xiě)數(shù)字識(shí)別

    機(jī)器學(xué)習(xí)python實(shí)戰(zhàn)之手寫(xiě)數(shù)字識(shí)別

    這篇文章主要為大家詳細(xì)介紹了機(jī)器學(xué)習(xí)python實(shí)戰(zhàn)之手寫(xiě)數(shù)字識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • python format 格式化輸出方法

    python format 格式化輸出方法

    今天小編就為大家分享一篇python format 格式化輸出方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python3.13?+Pycharm?開(kāi)發(fā)環(huán)境配置

    Python3.13?+Pycharm?開(kāi)發(fā)環(huán)境配置

    本文全面解釋了如何配置Python3.13和PyCharm的開(kāi)發(fā)環(huán)境,適合初學(xué)者,詳細(xì)介紹了Python安裝步驟、選擇解釋器、常用快捷鍵和推薦插件,強(qiáng)調(diào)了虛擬環(huán)境的重要性,以及如何使用PyCharm進(jìn)行高效開(kāi)發(fā),感興趣的可以了解一下
    2024-11-11
  • OpenCV半小時(shí)掌握基本操作之分水嶺算法

    OpenCV半小時(shí)掌握基本操作之分水嶺算法

    這篇文章主要介紹了OpenCV基本操作之分水嶺算法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Python樹(shù)的平衡檢測(cè)算法實(shí)現(xiàn)

    Python樹(shù)的平衡檢測(cè)算法實(shí)現(xiàn)

    樹(shù)的平衡檢測(cè)是指判斷一棵樹(shù)是否為平衡二叉樹(shù),即每個(gè)節(jié)點(diǎn)的左右子樹(shù)高度差不超過(guò)1,本文主要介紹了Python樹(shù)的平衡檢測(cè)算法實(shí)現(xiàn),感興趣的可以了解一下
    2023-11-11
  • 在Django model中設(shè)置多個(gè)字段聯(lián)合唯一約束的實(shí)例

    在Django model中設(shè)置多個(gè)字段聯(lián)合唯一約束的實(shí)例

    今天小編就為大家分享一篇在Django model中設(shè)置多個(gè)字段聯(lián)合唯一約束的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07

最新評(píng)論

沙雅县| 吉首市| 平湖市| 昆山市| 浦江县| 西吉县| 麻阳| 涿鹿县| 金平| 榆中县| 洱源县| 五指山市| 饶平县| 龙岩市| 兰溪市| 台南市| 祥云县| 上虞市| 云龙县| 随州市| 海兴县| 龙山县| 抚顺市| 筠连县| 凉城县| 老河口市| 香港 | 永寿县| 松潘县| 西乌珠穆沁旗| 台东县| 广河县| 怀集县| 吉木乃县| 乡城县| 河津市| 曲松县| 阳高县| 松阳县| 绥德县| 温宿县|