selenium自动化——多窗口处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium自动化——多窗口处理相关的知识,希望对你有一定的参考价值。

要想在多个窗口之间切换,首先要获得每一个窗口的唯一标识符号(句柄)。通过获得的句柄来区别分不同的窗口,从而对不同窗口上的元素进行操作。

代码示例:

#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com/")


#获得当前窗口
nowhandle=driver.current_window_handle


#打开注册新窗口
driver.find_element_by_name("tj_reg").click()


#获得所有窗口

allhandles=driver.window_handles


#循环判断窗口是否为当前窗口
for handle in allhandles:
if handle != nowhandle:
driver.switch_to_window(handle)
print ‘now register window!‘


#切换到邮箱注册标签
driver.find_element_by_id("mailRegTab").click()
time.sleep(5)
driver.close()


#回到原先的窗口
driver.switch_to_window(nowhandle)
driver.find_element_by_id("kw").send_keys(u"注册成功!")
time.sleep(3)
driver.quit()

 

用到的方法:

current_window_handle:获得当前窗口句柄

window_handles:返回的所有窗口的句柄到当前会话

switch_to_window():用于处理多窗口操作的方法,与我们前面学过的 switch_to_frame() 是类似,switch_to_window()用于处理多窗口之前切换,switch_to_frame() 用于处理多框架的切换。

close():如果你足够细心会发现我们在关闭“注册页”时用的是 close()方法,而非 quit();close()用于关闭当前窗口,quit()用于退出驱动程序并关闭所有相关窗口

 

以上是关于selenium自动化——多窗口处理的主要内容,如果未能解决你的问题,请参考以下文章

Selenium2+python自动化29-js处理多窗口

selenium多表单操作与多窗口,以及警告框处理

Selenium2+python自动化-窗口多标签处理方法总结(转载)

Selenium2+python自动化-窗口多标签处理方法总结(转载)

web自动化6-selenium多窗口切换及JS对话框处理

523selenium多窗口处理