python删除网页弹出对话框_python selenium-webdriver 处理JS弹出对话框

在实际系统中,在完成某些操作时会弹出对话框来提示,主要分为"警告消息框","确认消息框","提示消息对话"三种类型的对话框。

1.警告消息框(alert)

警告消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说用户必须先关闭该消息框然后才能继续进行操作。

2.确认消息框(confirm)

确认消息框向用户提示一个"是与否"问题,用户可以根据选择"确定"按钮和"取消"按钮。

3.提示消息对话(prompt)

提示消息框提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个"确定"按钮和一个"取消"按钮。选择"确认"会响应对应的提示信息,选择"取消"会关闭对话框。

selenium 提供switch_to_alert()方法定位到 alert/confirm/prompt对话框。使用 text/accept/dismiss/send_keys 进行操作,这里注意的是send_keys只能对prompt进行操作。

switch_to_alert()   #定位弹出对话

text()                   #获取对话框文本值

accept()                   #相当于点击"确认"

dismiss()                  #相当于点击"取消"

send_keys()              # 输入值,这个alert和confirm没有输入对话框,所以这里就不能用了,所以这里只能使用在prompt这里。

为了便于显示switch_to_alter()方法,下面我这边写了一个小小的页面,这里我把三种对话框全部包括下来,然后来进行模拟实际过程中遇到的对话框。

hello girl

function showAlert(){

document.getElementById("textSpan").innerHTML="";

if(confirm("你是帅哥吗?")){

document.getElementById("textSpan").innerHTML="您为何如此自信?";

}else{

document.getElementById("textSpan").innerHTML="您为何如此谦虚?";

}

}

function showPro(){

document.getElementById("textSpan").innerHTML="";

con = prompt("输入1为强哥聪明,输入2为左哥笨");

if(con==1){

document.getElementById("textSpan").innerHTML="强哥是真聪明啊";

}else if(con==2){

document.getElementById("textSpan").innerHTML="左哥是真笨啊";

}else{

document.getElementById("textSpan").innerHTML="您没有按要求输入,请重新输入";

}

}

function showAlert2(){

document.getElementById("textSpan").innerHTML="";

alert("用我三世烟火,换你一世迷离");

}

下面的三个例子,主要来演示如何处理上面说的三种对话框。

1.处理alert对话框。

#-*-coding:utf-8 -*-

import time

from selenium import webdriver

driver = webdriver.Chrome()

driver.maximize_window()

driver.get('file:///C:/Users/hunk/Desktop/alter.html')

'''获取alert对话框的按钮,点击按钮,弹出alert对话框'''

driver.find_element_by_xpath('/html/body/div/input[2]').click()

'''获取alert对话框'''

alert = driver.switch_to_alert()

'''添加等待时间'''

time.sleep(2)

'''获取警告对话框的内容'''

print (alert.text) #打印警告对话框内容

alert.accept() #alert对话框属于警告对话框,我们这里只能接受弹窗

'''添加等待时间'''

time.sleep(2)

driver.quit()

2.处理confirm对话框

#-*-coding:utf-8 -*-

import time

from selenium import webdriver

driver = webdriver.Chrome()

driver.maximize_window()

driver.get('file:///C:/Users/hunk/Desktop/alter.html')

'''获取confirm对话框的按钮,点击按钮,弹出confirm对话框'''

driver.find_element_by_xpath('/html/body/div/input[3]').click()

'''获取confirm对话框'''

dialog_box = driver.switch_to_alert()

'''添加等待时间'''

time.sleep(2)

'''获取对话框的内容'''

print (dialog_box.text) #打印警告对话框内容

'''点击【确认】显示"您为何如此自信?"'''

dialog_box.accept() #接受弹窗

print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text)

time.sleep(2)

'''再次获取confirm对话框的按钮,点击按钮,弹出confirm对话框'''

driver.find_element_by_xpath('/html/body/div/input[3]').click()

'''再次获取confirm对话框'''

dialog_box = driver.switch_to_alert()

'''点击【取消】显示"您为何如此谦虚?"'''

time.sleep(2)

dialog_box.dismiss() #关闭获取取消对话框

print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text)

driver.quit()

3.处理prompt对话框

#-*-coding:utf-8 -*-

import time

from selenium import webdriver

driver = webdriver.Chrome()

driver.maximize_window()

'''获取对话框输入2,并且点击【确认】,文本框内提示,点击【取消】文本框内提示'''

driver.get('file:///C:/Users/hunk/Desktop/alter.html')

'''获取prompt对话框的按钮,点击按钮,弹出confirm对话框'''

driver.find_element_by_xpath('/html/body/div/input[1]').click()

'''获取prompt对话框'''

dialog_box = driver.switch_to_alert()

'''添加等待时间'''

time.sleep(2)

'''获取对话框的内容'''

print (dialog_box.text) #打印警告对话框内容

dialog_box.send_keys("2") #弹出框内输入2

dialog_box.accept() #接受

print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text) #获取关闭弹窗结果 #获取确认弹窗结果

'''这里等待几秒在测试取消'''

time.sleep(2)

#************************点击【取消】,并且获取显示结果**********************

driver.find_element_by_xpath('/html/body/div/input[1]').click()

'''获取prompt对话框'''

dialog_box = driver.switch_to_alert()

'''添加等待时间'''

time.sleep(2)

dialog_box.dismiss() #关闭对话框

print (driver.find_element_by_xpath('//*[@id="textSpan"]/font').text) #获取关闭弹窗结果

time.sleep(2)

driver.quit()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值