浏览器多窗口处理:
有时候我们在测试一个web应用的时候会出现多个浏览器窗口的情况,
webdriver提供了相应的解决方案,如下:
首先要获得每一个窗口的唯一标识符号(句柄),通过获得的句柄来区分不同的
窗口,从而对不同窗口上的元素进行操作。
举例:
nowhandle=driver.current_window_handle #获取当前窗口句柄 主窗口就是第一个窗口的句柄
driver.find_element_by_css_selector('a.pass-reglink').click()
time.sleep(2)
allhands = driver.window_handles #获取所有窗口的句柄
for hands in allhands:
if hands != nowhandle:
driver.switch_to_window(hands) #通过句柄跳转窗口
driver.find_element_by_name("account").send_keys("123456")
driver.close() #关闭新打开的窗口
driver.switch_to_window(nowhandle) #回到之前的窗口
driver.find_element_by_css_selector("a.close-btn").click()
注意:
- 一个窗口就是一个句柄,是一串随记的字符串值。每次打开新窗口,句柄值会变化。
求第二个窗口的句柄:Remove()方法+for
优化:通过title或者url跳转
通过网页标题跳转
通过URL跳转: