多表单切换
>>在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()