2.11 alert\confirm\prompt
前言
不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert。先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决。alert\confirm\prompt弹出框操作主要方法有:text:获取文本值accept() :点击"确认"dismiss() :点击"取消"或者叉掉对话框send_keys() :输入文本值 --仅限于prompt,在alert和confirm上没有输入框一、认识alert\confirm\prompt
1.如下图,从上到下依次为alert\confirm\prompt,先认清楚长什么样子,以后遇到了就知道如何操作了。2.html源码如下(有兴趣的可以copy出来,复制到txt文本里,后缀改成html就可以了,然后用浏览器打开):
Alert
二、alert操作
1.先用switch_to_alert()方法切换到alert弹出框上
2.可以用text方法获取弹出的文本 信息 3.accept()点击确认按钮 4.dismiss()相当于点右上角x,取消弹出框 (url的路径,直接复制浏览器打开的路径)三、confirm操作
1.先用switch_to_alert()方法切换到alert弹出框上 2.可以用text方法获取弹出的文本 信息 3.accept()点击确认按钮 4.dismiss()相当于点取消按钮或点右上角x,取消弹出框(url的路径,直接复制浏览器打开的路径)四、prompt操作
1.先用switch_to_alert()方法切换到alert弹出框上 2.可以用text方法获取弹出的文本 信息 3.accept()点击确认按钮 4.dismiss()相当于点右上角x,取消弹出框 5.send_keys()这里多个输入框,可以用send_keys()方法输入文本内容(url的路径,直接复制浏览器打开的路径)五、select遇到的坑
1.在操作百度设置里面,点击“保存设置”按钮时,alert弹出框没有弹出来。(Ie浏览器是可以的) 2.分析原因:经过慢慢调试后发现,在点击"保存设置"按钮时,由于前面的select操作后,失去了焦点 3.解决办法:在select操作后,做个click()点击操作s = driver.find_element_by_id("nr")Select(s).select_by_visible_text("每页显示20条") time.sleep(3) s.click()
六、最终代码
# coding:utf-8from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.select import Select import time driver = webdriver.Firefox() url = "https://www.baidu.com" driver.get(url) driver.implicitly_wait(20) # 鼠标移动到“设置”按钮 mouse = driver.find_element_by_link_text("设置") ActionChains(driver).move_to_element(mouse).perform() driver.find_element_by_link_text("搜索设置").click() # 通过text:select_by_visible_text() s = driver.find_element_by_id("nr") Select(s).select_by_visible_text("每页显示20条") time.sleep(3) s.click() driver.find_element_by_link_text("保存设置").click() time.sleep(5) # 获取alert弹框 t = driver.switch_to_alert() print t.text t.accept()
这一篇应该比较简单,alert相关的内容比较少,虽然有一些页面也有弹窗,但不是所有的弹窗都叫alert。
alert的弹出框界面比较简洁,调用的是Windows系统弹窗警告框,没花里胡哨的东西,还是很容易区分的。