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() # 再点击确定