为了账号安全,请及时绑定邮箱和手机立即绑定

窗口句柄未在 Python Selenium 上更新

窗口句柄未在 Python Selenium 上更新

largeQ 2022-03-09 20:51:04
我正在模拟与 Selenium 的用户交互,例如,我基本上在导航模式上单击了 3 次。在每个窗口,我都在映射它window_handle并且我意识到,它current_window_handle总是返回相同的标识符,并且window_handles总是具有相同的大小,而不是拥有一个窗口对象列表。因此,我不能从window_3to切换window_1,因为current_window_handle总是一样的......这是一个示例,用于演示问题(单击链接的代码被禁止,以便将问题集中在我遇到问题的代码上):# click on a link, wait and get window handlewindow_1 = browser.current_window_handleprint(window_1)print(browser.window_handles)print(browser.session_id)browser.implicitly_wait(3)# click on a link, wait and get window handlewindow_2 = browser.current_window_handleprint(window_2)print(browser.window_handles)print(browser.session_id)browser.implicitly_wait(3)# click on a link, wait and get window handlewindow_3 = browser.current_window_handleprint(window_3)print(browser.window_handles)print(browser.session_id)结果:CDwindow-18D629A1BFC3391C5AE352F02768EFA3['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']c50563aa58c1565d8c82ead6653e65a4CDwindow-18D629A1BFC3391C5AE352F02768EFA3['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']c50563aa58c1565d8c82ead6653e65a4CDwindow-18D629A1BFC3391C5AE352F02768EFA3['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']c50563aa58c1565d8c82ead6653e65a4根据 Selenium API Doc:– current_window_handle用法:driver.current_window_handle– 窗口句柄返回当前会话中所有窗口的句柄。用法:driver.window_handles如您所见,会话 ID 始终相同。在这种情况下可能会出现什么问题?
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

如果您查看它的输出,print(browser.window_handles)它总是与只有一个列表项相同。

['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']

这表明链接正在加载/刷新同一窗口中的数据。因此,您不必切换到任何其他选项卡。

每当您看到新窗口/选项卡打开时,您始终可以在对新窗口执行操作之前切换到新窗口。

切换到最新窗口:

driver.switch_to.window(driver.window_handles[-1])


查看完整回答
反对 回复 2022-03-09
  • 1 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号