WebDriverWait
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
driver:浏览器驱动
timeout:最长超时时间,默认以秒为单位
poll_frequency:检测的间隔步长,默认为0.5s
ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。
iframe切换
# 切换ifram第一种
'''
控制台elements输入//iframe,鼠标点击该元素查看其在第几个iframe
driver.switch_to.frame('frame_name')
driver.switch_to.frame(1)
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
切换完毕,尽量睡1秒
'''
driver.switch_to.frame(1)
# 切换ifram第二种,传参和第一种保持一致
EC.frame_to_be_available_and_switch_to_it(1)
# 从iframe内切到上一层
driver.switch_to.parent_frame()
# 从iframe内切换默认顶层,default:默认,content:内容
driver.switch_to.default_content()
窗口切换
# 切换窗口第一种
# 获取新窗口的句柄列表,新打开的一定位于最后一位
handles = driver.window_handles
# 切换至最新的窗口
driver.switch_to.window(handles[-1])
# 切换窗口第二种,在新窗口打开之前获取所有窗口的句柄
# 该方法是用新窗口之前的列表长度与打开后对比,如果有差异则表示有新的窗口打开
WebDriverWait(driver,10).until(EC.new_window_is_opened(handles))
# 重新获取窗口句柄列表
handles = driver.window_handles
# 切换至最新的窗口
driver.switch_to.window(handles[-1])
浏览器原生对话框
# 浏览器原生对话框切换,第一行为判断弹窗是否出现
WebDriverWait(driver,10).until(EC.alert_is_present())
alert = driver.switch_to.alert()
# 点击确认按钮
alert.accept()
# 点击取消按钮
alert.dismiss()