首页 > Web开发 > 详细

Selenium中web窗口切换详解

时间:2020-03-08 00:49:55      阅读:88      评论:0      收藏:0      [点我收藏+]

窗口切换,简单来说就是在原来的页面窗口下打开了一个新的窗口,需要要新的窗口中,去进行下一步的操作。

因此 需要知道:

1)怎么知道需要切换到哪个窗口?

2)代码程序怎么知道哪个窗口是新的窗口?

步骤:

1)得到目前打开的所有窗口。

这里要引入句柄的概念,每个窗口都有一个句柄。

所有窗口显示集合是一个列表。其顺序是:先出现的,先追加到列表;新的窗口,在列表的最后。

即最先打开的窗口,在列表第一个;

# 获取所有的窗口句柄
wins = driver.window_handles
print(wins)

2)切换到新窗口

# 切换到新的窗口
driver.switch_to.window(wins[-1])
print("切换之后的句柄:",driver.current_window_handle)

3)在新的窗口里,定位元素操作元素

示例:

这里以在百度中输入“”搜索selenium webdriver“”,并在搜索结果中找到官网(切换到官网窗口),执行下载文件操作。

代码如下:

 1 import time
 2 from  selenium import  webdriver
 3 from selenium.webdriver.common.by import By
 4 from  selenium.webdriver.support.wait import WebDriverWait
 5 from selenium.webdriver.support import expected_conditions as EC
 6 
 7 # 1、打开访问百度
 8 driver = webdriver.Chrome()
 9 driver.maximize_window()
10 driver.get("https://www.baidu.com/")
11 
12 # 2、在百度首页输入框中输入selenium webdriver
13 # 1)定位到百度首页输入框:根据ID定位
14 # 2)在输入框中输入:selenium webdriver
15 # 3)点击百度一下:根据ID定位,后加点击操作_click()
16 element = driver.find_element_by_id("kw")
17 element.send_keys("selenium webdriver")
18 driver.find_element_by_id("su").click()
19 
20 # 3、在搜索到的页面结果中找到 - SeleniumHQ Browser Automation
21 loc =(By.XPATH, //a[text()=" - SeleniumHQ Browser Automation"])
22 # 使用隐性等待10秒,构建使得loc元素是可见的
23 WebDriverWait(driver,20).until(EC.visibility_of_element_located(loc))
24 # 触发新的窗口出现:找到 - SeleniumHQ Browser Automation元素后,点击跳转到先窗口
25 driver.find_element_by_xpath(//a[text()=" - SeleniumHQ Browser Automation"]).click()
26 # 强制等待1秒
27 time.sleep(1)
28 
29 # 4、获取所有的窗口句柄
30 wins = driver.window_handles
31 print(wins)
32 
33 # 5、获取自己当前所在的窗口句柄
34 print(driver.current_window_handle)
35 
36 # 6、切换到新的窗口
37 driver.switch_to.window(wins[-1])
38 print("切换之后的句柄:",driver.current_window_handle)
39 
40 # 7、在新的窗口等待查找的元素,并对元素进行点击操作
41 loc2 = (By.XPATH,//div[@class="download-button webdriver"])
42 WebDriverWait(driver,15).until(EC.visibility_of_element_located(loc2))
43 driver.find_element(*loc2).click()
44 
45 # 8、退出会话
46 time.sleep(5)
47 driver.quit()

 

Selenium中web窗口切换详解

原文:https://www.cnblogs.com/forayepy/p/12439408.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!