selenium--彈框處理
selenium---彈出框處理
在web頁面上經常會遇到一些彈出框,彈出框也分很多種,有的點選確定和取消,有的可以輸入一些內容。
彈出框
彈出框有三種,分別是:alert,confirm,prompt
彈出框的主要操作方法:
ext:獲取文字值
accept() :點選"確認"
dismiss() :點選"取消"或者關閉彈出框
send_keys() :輸入文字值
alert
alert是HTMLDOM中用到的一種指令碼語言,它的中文意思是“提醒”。它是JavaScript或VBscript指令碼語言中視窗window物件的一個常用方法;其主要用法就是在你自己定義了一定的函式以後,通過執行相應的操作,所彈出對話方塊的語言。並且alert對話方塊通常用於一些對使用者的提示資訊。常見的為alert函式。.
confirm
confirm是JavaScript語言中HTMLDOM的一個方法。主要用法是:顯示一個帶有指定訊息與“確定”及“取消”按鈕的對話方塊。
prompt
prompt是javascript語言中的一個方法,主要用處是顯示提示對話方塊。
alert
安靜自己寫了一個alert的彈框,複製下面程式碼,存放在記事本中,字尾名改成html就行了
<html>
<head>
<script type="text/javascript">
function display_alert()
{
alert("請關注 測試-安靜!")
}
</script>
</head>
<body>
<center>
<input id="anjing" type="button" onclick="display_alert()"
value="點選我,有驚喜!" />
</center>
</body>
</html>
操作彈出框可以通過selenium進行切換到彈出框上,然後在進行一系列的操作。切換到彈出框方法:switch_to_alert()
話不多說,上程式碼
from selenium import webdriver
import time
driver = webdriver.Chrome()
path = r'E:\web\alert.html'
driver.get(path)
driver.find_element_by_id('anjing').click()
# 切換到alert
a = driver.switch_to_alert()
# 列印彈出框文字內容
print(a.text)
time.sleep(2)
# 點選確定
a.accept()
confirm
安靜同樣寫了一個confirm的檔案。也是通過上面的方法進行操作
html:
<html>
<head>
<script type="text/javascript">
function show_confirm()
{
var r=confirm("請問:您是否關注了安靜的部落格?");
if (r==true)
{
alert("感謝老鐵支援!");
}
else
{
alert("請關注 測試-安靜!");
}
}
</script>
</head>
<body>
<center>
<input id="anjing" type="button" onclick="show_confirm()" value="點我,點我有驚喜!" />
</center>
</body>
</html>
通過selenium運用switch_to_alert()進行切換到彈出框中,然後在點選取消,再次點選確定
from selenium import webdriver
import time
driver = webdriver.Chrome()
path = r'E:\web\confirm.html'
driver.get(path)
driver.find_element_by_id('anjing').click()
# 切換到alert
a = driver.switch_to_alert()
# 列印彈出框文字內容
print(a.text)
time.sleep(4)
# 點選取消
a.dismiss()
print(a.text)
time.sleep(4)
# 點選確定
a.accept()
prompt
同樣是上述方法,這次的彈出框存在輸入框,可以通過send_keys方法進行輸入內容
html:
<html>
<head>
<script type="text/javascript">
function disp_prompt()
{
var name=prompt("請問:您關注安靜的部落格了嗎?","關注了")
if (name!=null && name!="")
{
document.write("感謝老鐵支援!")
}
}
</script>
</head>
<body>
<input type="button" onclick="disp_prompt()" value="點我,點我有驚喜" />
</body>
</html>
這裡我們也可以通過send_keys()輸入內容(這裡安靜不知道為啥無法輸入內容,大家可以試試。)
from selenium import webdriver
import time
driver = webdriver.Chrome()
path = r'E:\web\prompt.html'
driver.get(path)
driver.find_element_by_id('anjing').click()
# 切換到alert
a = driver.switch_to_alert()
# 列印彈出框文字內容
print(a.text)
time.sleep(4)
# 點選取消
a.send_keys('測試-安靜!')
time.sleep(1)
# 點選確定
a.accept()
其他方法
我們可以通過其他方法進行跳轉到alert,這裡需要用到Alert模組,遇到模組,首先進行匯入from selenium.webdriver.common.alert import Alert
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.alert import Alert
driver = webdriver.Chrome()
path = r'E:\web\prompt.html'
driver.get(path)
driver.find_element_by_id('anjing').click()
# 切換到alert
WebDriverWait(driver, 5).until(EC.alert_is_present()) # 等待彈出窗口出現
# alert = driver.switch_to.alert
# 跳轉倒alert
alert = Alert(driver)
print(alert.text)
alert.accept()
判斷彈出框
執行程式碼過程中,可能會因為其他因素,網速慢等情況導致彈出框沒有出現,我們可以通過判斷元素中判斷彈出框時否出現來進行操作
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome()
path = r'E:\web\prompt.html'
driver.get(path)
driver.find_element_by_id('anjing').click()
# 切換到alert
WebDriverWait(driver, 5).until(EC.alert_is_present()) # 等待彈出窗口出現
alert = driver.switch_to.alert
print(alert.text)
alert.accept()
簡單的介紹了關於彈出框的三種方式。大家可以操作之前可以先看看到底是哪一種,然後使用對應的方法進行完成自動化測試。
引自:https://www.cnblogs.com/qican/p/13491666.html