背景
如果你的目标元素出现在一个iframe标签下,则不能直接定位,必须先完成切换才能进行定位操作,如下图
整个理解为一个大的房间,里面是客厅,driver进到客厅后,如果想操作iframe A里的数据,需要进入A,同理
如果操作其它房间,先从A出来,然后再进b
iframe
操作
进入ifram方法
方法一直接切换到iframe
#第一步:先定位iframe标签
time.sleep(5)
iframe_element = driver.find_element(By.CSS_SELECTOR,'iframe[frameborder="0"]')
#第二步:切换到iframe
driver.switch_to.frame(iframe_element)
#第三步:操作iframe里面的元素
email = driver.find_element(By.NAME,'email').send_keys('xx')
方法二 通过索引切入
#第二步:切换到iframe
driver.switch_to.frame(0) #前提:需要知道iframe的索引
#第三步:操作iframe里面的元素
email = driver.find_element(By.NAME,'email').send_keys('xx')
从iframe再切换到默认
driver.switch_to.defalut_content()#返回driver默认所在的html,其实就是最外层的
切换到父级
从D切换到b
driver.switch_to.parent_frame()
alert
切换到alert弹窗
driver.switch_to.alert #切换到弹窗
点击确认/确定
alert =driver.switch_to.alert
alert.accept()
点击取消
alert =driver.switch_to.alert
alert.dismiss()
向弹窗输入文字
alert =driver.switch_to.alert
alert.send_keys('xx')
获取弹窗上的提示语
alert =driver.switch_to.alert
alert.text
demo
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options = options)
driver.get('https://www.w3cschool.cn/tryrun/showhtml/tryjs_alert')
driver.maximize_window()
time.sleep(2)
#切换到frame
driver.switch_to.frame('result-iframe')
#点击后出现js弹窗
driver.find_element(By.XPATH,'//input[@value="显示警告框"]').click()
#切换到alert对象
alert =driver.switch_to.alert
assert '警告' in alert.text
alert.accept()