alert/confirm/prompt处理:
WebDriver中处理原生JS的 alert、confirm以及prompt非常方便。
具体思路是使用switch_to.alert()方法定位到当前的 alert/confirm/prompt (这里注意当前页面只能同时含有一个控件,如果多了会报错的,所以这就需要一一处理了),然后在调用Alert的方法进行操作;
Alert提供了以下几个方法:
text:返回alert/confirm/prompt中的文字内容
accept: 点击确认按钮
dismiss: 点击取消按钮如果有取消按钮的话
send_keys: 向prompt中输入文字
备注:send_keys这个方法在chromedriver中输入后不会显示。并且要和accept联合使用才有效
代码如下:
import os
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
current_path = os.path.dirname(os.path.abspath(__file__)) # 当前路径
driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路径
pages_path = os.path.join(current_path,'../pages/element_samples.html') # 本地网页路径
driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等
driver.get('file://%s'%pages_path) # 本地网页打开file:// 打开部署好的站点http://
# alert弹框
driver.find_element(By.XPATH,'//input[@name="alterbutton"]').click()
time.sleep(2)
text = driver.switch_to.alert.text # 获取弹框的文本
driver.switch_to.alert.accept() # 点击确定
print( text )
# confirm弹框
driver.find_element(By.XPATH,'//input[@name="confirmbutton"]').click()
time.sleep(2)
driver.switch_to.alert.dismiss() # 点击取消
text1 = driver.switch_to.alert.text # 获取弹框的文本
time.sleep(2)
driver.switch_to.alert.accept() # 点击确定
print( text1 )
# prompt弹框
# 备注:send_keys这个方法在chromedriver中输入后不会显示。并且要和accept联合使用才有效
driver.find_element(By.XPATH,'//input[@name="promptbutton"]').click()
time.sleep(2)
driver.switch_to.alert.send_keys('python') # 必须send_keys和accept()联合使用才生效
driver.switch_to.alert.accept() # 点击确定
driver.switch_to.alert.accept() # 再点击确定