窗口句柄未在 Python Selenium 上更新

我正在模拟与 Selenium 的用户交互,例如,我基本上在导航模式上单击了 3 次。


在每个窗口,我都在映射它window_handle并且我意识到,它current_window_handle总是返回相同的标识符,并且window_handles总是具有相同的大小,而不是拥有一个窗口对象列表。


因此,我不能从window_3to切换window_1,因为current_window_handle总是一样的......


这是一个示例,用于演示问题(单击链接的代码被禁止,以便将问题集中在我遇到问题的代码上):


# click on a link, wait and get window handle

window_1 = browser.current_window_handle

print(window_1)

print(browser.window_handles)

print(browser.session_id)

browser.implicitly_wait(3)



# click on a link, wait and get window handle

window_2 = browser.current_window_handle

print(window_2)

print(browser.window_handles)

print(browser.session_id)

browser.implicitly_wait(3)


# click on a link, wait and get window handle

window_3 = browser.current_window_handle

print(window_3)

print(browser.window_handles)

print(browser.session_id)

结果:


CDwindow-18D629A1BFC3391C5AE352F02768EFA3

['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']

c50563aa58c1565d8c82ead6653e65a4


CDwindow-18D629A1BFC3391C5AE352F02768EFA3

['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']

c50563aa58c1565d8c82ead6653e65a4


CDwindow-18D629A1BFC3391C5AE352F02768EFA3

['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']

c50563aa58c1565d8c82ead6653e65a4

根据 Selenium API Doc:


– current_window_handle


用法:driver.current_window_handle


– 窗口句柄


返回当前会话中所有窗口的句柄。


用法:driver.window_handles


如您所见,会话 ID 始终相同。


在这种情况下可能会出现什么问题?


largeQ
浏览 189回答 1
1回答

慕莱坞森

如果您查看它的输出,print(browser.window_handles)它总是与只有一个列表项相同。['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']这表明链接正在加载/刷新同一窗口中的数据。因此,您不必切换到任何其他选项卡。每当您看到新窗口/选项卡打开时,您始终可以在对新窗口执行操作之前切换到新窗口。切换到最新窗口:driver.switch_to.window(driver.window_handles[-1])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python