alert 实际上也是Selenium的一个模块,要使用该模块首先得引入
from selenium.webdriver.common.alert import Alert
点击确认按钮:driver.switch_to.alert.accept()
点击取消按钮:driver.switch_to.alert.dismiss()
如果alert弹框上有文本框,可以输入文字
driver.switch_to.alert.sendkeys()
返回alert上的文本内容
text = driver.switch_to.alert.text
具体应用见:新股是否做了融资租赁
在实际网页中,往往弹窗会有一定延时,这时候你用这个语句就会报一个no such alert的错误,意味着获取不到弹窗,此时要用如下的办法解决:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
wait = WebDriverWait(driver, 10)
wait.until(EC.alert_is_present())
driver.switch_to.alert.accept()#注意之前的两步
cookiedict = driver.get_cookies()
引用Webdriver类,里面的参数第一个是句柄,第二个则是超时等待时间,这里是10秒钟。
Webdriver这种方法叫做显示等待,用一个默认频率不停的刷新(默认是0.5s),检测当前页面元素是否存在,如果超过10秒则抛出TimeOut。
很显然,这种方法比一般的sleep效率要高。
wait.until(EC.alert_is_present())就是判断弹窗是否存在,如果存在,那么就不会抛出异常,继续走下一步也就是获取到弹窗点击确定。
之后就可以进行正常的操作了。