在html的javascript交互中主要有Alert警告框、Confirm确认框、Prompt消息对话框。
部分小伙伴学了selenium的alert后,就不管啥弹出框都去用alert,这是行不通的,看到弹出框,先要确定是不是alert,是才能用,不是的话肯定不能用。
有些弹出框是div层,这种跟平常定位方法一样
有些弹出框是嵌套的iframe层,这种切换iframe就可以了
有些弹出框比较坑,是嵌入的一个窗口
text:获取文本值
accept() :点击"确认"
dismiss() :点击"取消"或者叉掉对话框
send_keys() :输入文本值 --仅限于prompt,在alert和confirm上没有输入框
4.代码
#!/usr/bin/env python#
#encoding:utf-8
import time
import selenium
from seleniumimport webdriver
from selenium.webdriver.common.action_chainsimport ActionChains
import sys
reload(sys)
sys.setdefaultencoding("utf-8" )
#打开网页
web=webdriver.Chrome()
url='E:\新建文本文档.html'
web.get(url)
web.maximize_window()
#设置只能等待时间
web.implicitly_wait(30)
#Alert警告框、Confirm确认框、Prompt消息对话框。
#alert
web.find_element_by_id('alert').click()
time.sleep(3)
alert1=web.switch_to_alert()
print(alert1.text)#显示弹出框内容
alert1.accept()#弹出框确认
#comfirm
web.find_element_by_id('confirm').click()
time.sleep(3)
web.switch_to_alert().accept()#确认按钮
time.sleep(3)
web.find_element_by_id('confirm').click()
time.sleep(3)
web.switch_to_alert().dismiss()#取消按钮
#prompt
web.find_element_by_id('prompt').click()
web.switch_to_alert().send_keys('selenium')
time.sleep(3)
web.switch_to_alert().accept()
time.sleep(3)
web.refresh()
time.sleep(3)
web.find_element_by_id('prompt').click()
time.sleep(3)
web.switch_to_alert().send_keys('selenium')
time.sleep(3)
web.switch_to_alert().dismiss()
#退出浏览器
time.sleep(3)
web.quit()