切换iframe窗口
selenium中的三大切换(handle窗口,iframe切换,alert弹框):
1,handle窗口切换:
当点击某个元素后,会重新生成一个新的页签,单此时我们的操作依然在原先的窗口中,如果要在新的窗口继续操作元素,那么就要用到handle窗口切换的方法。
window_handles:获取当前打开的所有窗口句柄,返回类型为一个列表。
currentwindowhandle:获取当前窗口的句柄。
switchto.window(handle_path) ;切换窗口,handle_path参数代表的是一个窗口句柄。
当操作某个元素后需要等待新的元素出现,我们用到了显性等待,EC给了我们一个方法为visibility_of_element_located(),表示元素可见,那么在handle窗口切换时也涉及到等待,那就是等待新的窗口打开,我将用一般方法和新的方法来展示,具体用法如下: (使用time.sleep()强制等待):
iframe 切换:
当我们要在新的html页面操作元素,就要切换到新的html页面后才能进行接下来的操作,常用方法如下: switch_to.frame(path):切换到新的html页面,path支持下标、name、WebElement对象三种参数 switch_to.default_content():切换到主html页面 switch_to.parent_frame():切换到上一层html页面(父页面) 在iframe切换中也有等待,除了使用time.sleep()方法外,EC给了我们一个方法为frame_to_be_available_and_switch_to_it(),表示iframe有效并切换到iframe当中,它支持下标、name、WebElement对象以及元组四种方法传参。
alert弹窗切换:
如何区分是alert弹框呢?一个简单的方法就是无法使用元素定位的弹框,并且需要优先处理后才能操作后面的元素,常用方法如下: switch_to.alert:切换到alert弹框 accept():确定 dismiss():取消 send_keys(keysToSend) :输入文本,keysToSend表示输入的文本内容字符串 text():获取弹出框里面的内容 在EC里面也给alert弹框设定了一个方法,alert_is_present()方法表示等待alert弹框出现并切换到alert弹框中 方法一(常规做法):
隐式等待
wb.implicitly_wait(5)
implicitly_wait(xx),
当使用了隐式等待执行测试的时候,如果WebDriver没有在DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常,
换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找DOM,默认的时间是0