弹出框有两种:页面弹出框(可定位元素能操作)、Windows弹出框(不能直接定位)
一、页面弹出框
等待弹出框出现之后,定位弹出框,操作其中元素
如:
driver =webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()#点击百度登录按钮
driver.find_element_by_xpath('//*[@id="u1"]//a[@name="tj_login"]').click()#等待百度登录弹出框中 要出现的元素可见
ele_id = "TANGRAM__PSP_10__footerULoginBtn"param=(By.ID,ele_id)#元素可见时,再进行后续操作
WebDriverWait(driver,10).until(EC.visibility_of_element_located(param))
driver.find_element_by_id(ele_id).click()
time.sleep(5)
driver.quit()
二、Windows弹出框
使用 driver.switch_to.alert 切换到Windows弹出框
Alert类提供了一系列操作方法:
accept() 确定
dismiss() 取消
text() 获取弹出框里面的内容
send_keys(keysToSend) 输入字符串
如:
#1:定位alert弹出框#点击页面元素,触发alert弹出框
driver.find_element_by_xpath('//*[@id="alert"]').click()
time.sleep(3)#等待alert弹出框可见
WebDriverWait(driver,20).until(EC.alert_is_present())#从html页面切换到alert弹框
alert =driver.switch_to.alert#获取alert的文本内容
print(alert.text)#接受--选择“确定”
alert.accept()#2:定位confirm弹出框
driver.find_element_by_xpath('//*[@id="confirm"]').click()
time.sleep(3)
WebDriverWait(driver,20).until(EC.alert_is_present())
alert=driver.switch_to.alertprint(alert.text)#接受--选择“取消”
alert.dismiss()#3:定位prompt弹出框
driver.find_element_by_id("prompt").click()
time.sleep(3)
WebDriverWait(driver,20).until(EC.alert_is_present())
alert=driver.switch_to.alert
alert.send_keys("jaja")
time.sleep(5)print(alert.text)#alert.dismiss()
alert.accept()