python selenium页面跳转_Python+selenium+webdriver 解决多窗口跳转后的当

描述:

通常我们selenium元素的时间经常遇到只要跳转页面了,定位就总是找不到我要找的元素,这是因为的你定位指针driver没有指向第二个页面,所以无法定位。知道原因后哪怎么来切换定位窗口呢,很简历。

通过下面语句可获取当前指定的窗口handle name,但是这里很多学者会觉得他获取的就是第二个页面的handle name,从页面显示可得知,其实错了,我也犯过这些的错。我们需要获取driver会话中的所有窗口的handle name,然后在列表中通过遍历切换想要指定的窗口就行了

current_window = driver.current_window_handle  # 获取当前窗口handle name

多页面产生后,通过遍历切换所要切换的窗口

all_window=driver.window_handles # 返回当前会话中所有窗口的句柄。

print("all_window:: ",all_window) # 打印当前所有窗口的句柄 name

for window in all_window: #通过遍历判断要切换的窗口

print("window:: ",window)

if window != current_window:

driver.switch_to.window(window) # 将定位焦点切换到指定的窗口,包含所有可切换焦点的选项

current_window = driver.current_window_handle # 获取当前窗口handle name

举例:

以百度为例,跳转第二个窗口后操作第二个

# coding:utf-8

from selenium import webdriver

import time

driver=webdriver.Chrome()

driver.get('http://www.baidu.com') #填入URL

driver.find_element_by_id("kw").send_keys("selenium") #输入搜索内容

driver.find_element_by_id("su").click() # 点击搜索按钮

time.sleep(4) # 等待搜索后的内容

current_window = driver.current_window_handle # 获取当前窗口handle name

print("current_window:: ",current_window)

driver.find_element_by_xpath("//*[@id='2']/h3/a").click()

time.sleep(3) # 等待第二个页面

all_window=driver.window_handles # 返回当前会话中所有窗口的句柄。

print("all_window:: ",all_window) # 打印当前所有窗口的句柄 name

for window in all_window: #通过遍历判断要切换的窗口

print("window:: ",window)

if window != current_window:

driver.switch_to.window(window) # 将定位焦点切换到指定的窗口,包含所有可切换焦点的选项

current_window = driver.current_window_handle # 获取当前窗口handle name

print("current_window:: ",current_window) # 打印当前窗口的句柄 name

driver.find_element_by_xpath("/html/body/div[4]/div[2]/div/div[2]/dl[1]/dd/a[1]").click()

日志打印输出结果:

current_window:: CDwindow-B8D78AE0E2BE6E2DFC897241D4737563

all_window:: ['CDwindow-B8D78AE0E2BE6E2DFC897241D4737563', 'CDwindow-5E824943E381BDF6AE2B100CC60A0797']

window:: CDwindow-B8D78AE0E2BE6E2DFC897241D4737563

window:: CDwindow-5E824943E381BDF6AE2B100CC60A0797

current_window:: CDwindow-5E824943E381BDF6AE2B100CC60A0797

Process finished with exit code 0

通过日志输出是不是更加了解了窗口切换的元素定位了呢

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值