selenium切换窗口:switch_to.window

使用场景:

在浏览器当中,如果在页面进行了某个操作,结果浏览器打开了另外一个新窗口(tab)。
如果要操作新窗口当中的,页面元素,就需要窗口切换。

从一个html当中,切换到了另外一个html

  • 1.获取当前会话浏览器的所有窗口**
    所有窗口句柄(列表) wins =driver.window_handles

句柄的顺序:先出现的先加入列表。最后出现的,最后加入列表。 新窗口:列表的最后一个!

  • 2.切换到指定窗口
    driver.switch_to.window(wins[-1]) #列表最后一个是最新的窗口

切换到指定窗口

driver.switch_to.window(wins[-1]) #列表最后一个是最新的窗口

# ==========  浏览器打开了另外一个新窗口  ===========
# 获取所有窗口句柄。句柄的顺序:先出现的先加入列表。最后出现的,最后加入列表。
wins = driver.window_handles
# 取最新打开的窗口
print("当前所有的窗口句柄:", wins)
# 切换到最新打开的窗口
driver.switch_to.window(wins[-1])
# # # ==========  浏览器打开了另外一个新窗口  2===========
# 获取当前的窗口句柄
wins = driver.window_handles
# === 打开新的窗口 ===
driver.find_element(By.XPATH, '//div[@id="1"]//a').click()

# # 要传一个句柄列表。等待新窗口出现.
wait.until(EC.new_window_is_opened(wins)) 
# # # 取最新打开的窗口
new_wins = driver.window_handles
print("当前所有的窗口句柄:", new_wins)
# # 切换到最新打开的窗口
driver.switch_to.window(wins[-1])
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
 
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
 
# 开启与浏览器的会话--百度
driver = webdriver.Chrome()
driver.maximize_window()  #窗口最大化
driver.get("http://www.baidu.com")
 
# 1、找到输入框元素。
user_input = (By.XPATH,"//input[@id='kw']")
ele = driver.find_element(*user_input)
# 输入操作
ele.clear()
ele.send_keys("selenium webdriver")
 
# 2、找到百度一下,然后点击。
driver.find_element_by_id("su").click()
# ===   当前页面有所改变,有新的东西加载进来了。
 
wait = WebDriverWait(driver,30)
# wait.until(条件) 等待页面元素加载成功
first_search_result_loc = (By.XPATH, '//div[@id="1"]//a')
wait.until(EC.visibility_of_element_located(first_search_result_loc))
 
# 获取当前的窗口句柄
wins = driver.window_handles
print("当前所有的窗口句柄:", wins)
 
sleep(1)
# 3、在搜索结果当中,选择第一条搜索记录,点击进去。=== 打开新的窗口 ===
driver.find_element(By.XPATH, '//div[@id="1"]//a').click()
 
sleep(1)
# ==========  浏览器打开了另外一个新窗口  ===========
# 获取所有窗口句柄。句柄的顺序:先出现的先加入列表。最后出现的,最后加入列表。
wins = driver.window_handles
# 取最新打开的窗口
print("当前所有的窗口句柄:", wins)
# 切换到最新打开的窗口
driver.switch_to.window(wins[-1])
 
 
# # # ==========  浏览器打开了另外一个新窗口  2===========
# # 要传一个句柄列表。等待新窗口出现.
# wait.until(EC.new_window_is_opened(wins))
# # # 取最新打开的窗口
# new_wins = driver.window_handles
# print("当前所有的窗口句柄:", new_wins)
# # 切换到最新打开的窗口
# driver.switch_to.window(wins[-1])
 

 
# =============  切换到了另外一个html页面当中,从另外一个html当中找元素 ===============
support_loc = (By.XPATH, '//span[text()="赞赏支持"]/parent::button')
wait.until(EC.element_to_be_clickable(support_loc))
driver.find_element(*support_loc).click()
 
# 结束与浏览器的会话
sleep(15)
driver.quit()
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值