selenium——iframe切换、alert弹框切换、窗口切换

1、iframe切换

切换到对应的iframe标签中可以进行定位

切换方法:driver.switch_to.frame
driver.switch_to.frame(名称)
driver.switch_to.frame(索引)
driver.switch_to.frame(elements节点)

driver = webdriver.Chrome()



driver.get('https://mail.qq.com/')

time.sleep(2)

# 方式一:切换iframe:通过iframe的名字(name属性)进行切换
driver.switch_to.frame('login_frame')
driver.find_element_by_xpath("//a[text()='帐号密码登录']").click()

# 方式二:通过索引去切换iframe标签
time.sleep(2)
driver.switch_to.frame(0)

driver.find_element_by_xpath('//div[@id="wxLoginTab"]').click()
driver.find_element_by_xpath('//p[@id="auto_login"]/a').click()


# 方式三:通过element节点去进行切换
ele_iframe = driver.find_element_by_xpath('//iframe[@id="login_frame"]')
driver.switch_to.frame(ele_iframe)
driver.find_element_by_xpath("//a[text()='帐号密码登录']").click()

# 方式四:使用显示等待的方式,等待iframe处于可以的状态,然后切换进行
WebDriverWait(driver, 20, 1).until(
    EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@id="login_frame"]'))
)
driver.find_element_by_xpath("//a[text()='帐号密码登录']").click()

#  关于iframe切换回 默认的HTML页面
driver.switch_to.default_content()

# 切换回父级的iframe中
driver.switch_to.parent_frame()

2、alert弹框切换

# 关于alert弹框的切换
alert = driver.switch_to.alert
# 点击确认
alert.accept()
# 点击取消
alert.dismiss()
# 输入内容
alert.send_keys("python34567890")

3、窗口切换

获取所有窗口的句柄

ws = driver.window_handles

print(ws)

切换窗口的方法(窗口名),-1表示最新打开的窗口,1表示第一个窗口,2,3以此类推
driver.switch_to.window(ws[-1])

# 等待新窗口打开
ws = driver.window_handles
WebDriverWait(driver,5,0.5).until(EC.new_window_is_opened(ws)

原文地址:https://www.cnblogs.com/erchun/p/12906110.html