python selenium 关于多窗口切换

 

本篇博文针对多窗口切换

1.导入webdriver模块

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")#打开百度首页

 


2.获取当前窗口句柄

使用webdriver的方法 driver.current_window_handle方法

switch1 = current_window_handle#获取当前页面的句柄

3.定位百度首页上面的登录按钮,目的是为了进入注册页面,从而打开新的窗口

driver.find_element_by_link_text("登录").click()
driver.find_element_by_link_text("立即注册").click()

 

写到这里就得说点懵逼的事情了

我的想法是现在两个页面,我分别获取两个窗口的句柄

switch1 = driver.current_window_handle#百度首页

switch2 = driver.current_window_handle#注册页面

妥妥的出问题了

因为没有跑成功所以打印了他们发现他们两个是一样的

唉继续努力!!!!

无奈之下只能获取所有的句柄

windows= driver.window_handles

print (switch2,windows)

 

瞬间想骂人有没有

 4.切换到所需要的句柄上,也就是后边的那个,打开的新窗口

driver.switch_to.window(windows[1])

driver.find_element_by_id("TANGRAM__PSP_3__userName").send_keys(12345)

 妥妥的成功了

 

简单有么有

完整代码:

# -*- coding:utf-8 -*-
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.implicitly_wait(10)
# switch1 = driver.current_window_handle
# print (switch1)
driver.find_element_by_link_text("登录").click()
driver.find_element_by_link_text("立即注册").click()
#获取当前页面句柄
switch2 = driver.current_window_handle
windows= driver.window_handles
print(switch2)
print(windows)
driver.switch_to.window(windows[1])
print("qiehuanchenggong")
driver.find_element_by_id("TANGRAM__PSP_3__userName").send_keys(12345)

华丽丽的分割线------------------------------------------------
以上其实并不是我的真实目的,真实的目的是因为我学习切换的时候都是使用for循环和if判断进行切换,
当时我就想如果我的页面不止两个怎么整,有没有直接可以获取每一个窗口的句柄并命名的然后需要谁就去切换谁
目前我是还没有找到,哪位大神指导记得指导下哈
下面给出是有循环读取的方式
# -*- coding:utf-8 -*-
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.implicitly_wait(10)
# switch1 = driver.current_window_handle
# print (switch1)
driver.find_element_by_link_text("登录").click()
driver.find_element_by_link_text("立即注册").click()
#获取当前页面句柄
switch2 = driver.current_window_handle
windows= driver.window_handles
# print(switch2)
# print(windows)
# driver.switch_to.window(windows[1])
for window in windows:
if window != switch2:
driver.switch_to.window(window)
time.sleep(2)
driver.find_element_by_id("TANGRAM__PSP_3__userName").send_keys(12345)
posted @   飞羽小鱼仔  阅读(123)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示