selenium webdriver——多表单切换与多窗口切换

多表单切换

>>在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe

 表单内嵌页面上的元素无法直接定位。这时就需要通过suitch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面

 中。

 1 #Author:xiaoxiao
 2 from selenium import webdriver
 3 
 4 def setUp(self):
 5     # 打开浏览器
 6     self.driver = webdriver.Firefox()
 7     self.driver.implicitly_wait(10)
 8     self.driver.get("http://photo.163.com")
 9     # 找到登录模块对应的iframe
10     self.driver.switch_to.frame(self.driver.find_element_by_xpath("//div[@id='J-loginMod']//iframe"))
11     self.driver.switch_to.frame("x-URS-iframe")
12     # 找到账号输入框并输入账号
13     userinput = self.driver.find_element_by_name("email")
14     userinput.clear()
15     userinput.send_keys("yeyll0630")
16     # 找到密码输入框并输入密码
17     pwinput = self.driver.find_element_by_name("password")
18     pwinput.clear()
19     pwinput.send_keys("abc123")
20     # 找到登录按钮并点击
21     loginbutton = self.driver.find_element_by_id("dologin")
22     loginbutton.click()
23     # 切换到主页面
24     self.driver.switch_to.default_content()

 

多窗口切换

>>在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。WebDriver提供了

 switch_to.window()方法,可以实现不同的窗口之间的切换。

 1 from selenium import webdriver
 2 
 3 def setUp():
 4     # 打开浏览器
 5     driver = webdriver.Firefox()
 6     driver.implicitly_wait(10)
 7     driver.get("http://photo.163.com")
 8     # 找到了解更多按钮并点击
 9     knowbutton = driver.find_element_by_link_text("了解更多")
10     knowbutton.click()
11     # 获取窗口句柄
12     windowhanle = driver.current_window_handle  #当前窗口句柄
13     windowhanles = driver.window_handles      #所有窗口句柄
14     for handle in windowhanles:           #循环切换至新打开窗口
15         if handle != windowhanle:
16             driver.switch_to.window(handle)
17     # 获取iphone按钮并点击
18     iphonebutton = driver.find_element_by_id("J-iphone")
19     iphonebutton.click()
原文地址:https://www.cnblogs.com/airener/p/5952021.html