python+selenium个人学习笔记5-多窗口和多表单切换

多窗口和多表单

一、多窗口

在实际操作中,有些页面的链接点击会弹出一个新的窗口。这时候如果需要到新的窗口上进行操作,就需要学会窗口切换了。

1、获得当前窗口句柄:

driver.current_window_handle

2、获取当前所有的句柄:

driver.window_handles

3、切换到相应的窗口:

driver.switch_to.window()

示例:

复制代码
from selenium import webdriver
from time import sleep driver = webdriver.Chrome() driver.get("http://www.baidu.com") #获取当前窗口句柄 sreach_windows = driver.current_window_handle driver.find_element_by_link_text('登录').click() sleep(2) driver.find_element_by_link_text("立即注册").click() # 获得当前所有打开的窗口的句柄 all_handles = driver.window_handles #判断句柄是不是首页句柄 for handle in all_handles: if handle != sreach_windows: # sleep(5) # driver.switch_to.window(sreach_windows)#不是,切换到首页 sleep(5) driver.switch_to.window(handle)#不是,切换到注册页面 sleep(5) driver.quit()
复制代码

二、多表单

在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,Frame与Iframe两者可以实现的功能基本相同,不过frame是整个页面的框架,iframe是内嵌的网页元素。WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。

1、切换iframe

driver.switch_to.frame()

switch_to.frame() 默认可以直接取表单的id 或name属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位。

x_frame = driver.find_element_by_xpath("//*[@id="9"]") driver.switch_to.frame(x_frame)

2、释放iframe

driver.switch_to.default_content()

示例:

复制代码
from selenium import webdriver
from time import sleep driver = webdriver.Chrome() driver.get("http://mail.163.com/") sleep(2) # 切换iframe driver.switch_to.frame("x-URS-iframe") driver.find_element_by_name("email").send_keys("chen") driver.find_element_by_name("password").send_keys("chen") # 释放iframe driver.switch_to.default_content() sleep(5)
复制代码

多窗口和多表单

一、多窗口

在实际操作中,有些页面的链接点击会弹出一个新的窗口。这时候如果需要到新的窗口上进行操作,就需要学会窗口切换了。

1、获得当前窗口句柄:

driver.current_window_handle

2、获取当前所有的句柄:

driver.window_handles

3、切换到相应的窗口:

driver.switch_to.window()

示例:

复制代码
from selenium import webdriver
from time import sleep driver = webdriver.Chrome() driver.get("http://www.baidu.com") #获取当前窗口句柄 sreach_windows = driver.current_window_handle driver.find_element_by_link_text('登录').click() sleep(2) driver.find_element_by_link_text("立即注册").click() # 获得当前所有打开的窗口的句柄 all_handles = driver.window_handles #判断句柄是不是首页句柄 for handle in all_handles: if handle != sreach_windows: # sleep(5) # driver.switch_to.window(sreach_windows)#不是,切换到首页 sleep(5) driver.switch_to.window(handle)#不是,切换到注册页面 sleep(5) driver.quit()
复制代码

二、多表单

在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,Frame与Iframe两者可以实现的功能基本相同,不过frame是整个页面的框架,iframe是内嵌的网页元素。WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。

1、切换iframe

driver.switch_to.frame()

switch_to.frame() 默认可以直接取表单的id 或name属性。如果iframe没有可用的id和name属性,则可以通过下面的方式进行定位。

x_frame = driver.find_element_by_xpath("//*[@id="9"]") driver.switch_to.frame(x_frame)

2、释放iframe

driver.switch_to.default_content()

示例:

复制代码
from selenium import webdriver
from time import sleep driver = webdriver.Chrome() driver.get("http://mail.163.com/") sleep(2) # 切换iframe driver.switch_to.frame("x-URS-iframe") driver.find_element_by_name("email").send_keys("chen") driver.find_element_by_name("password").send_keys("chen") # 释放iframe driver.switch_to.default_content() sleep(5)
复制代码

猜你喜欢

转载自www.cnblogs.com/txx403341512/p/9353758.html