我正在模拟与Selenium的用户交互,例如,我基本上在导航模式上单击了3次。
在每个窗口上,我都在映射其window_handle
,并且我意识到current_window_handle
总是返回相同的标识符,而window_handles
总是具有相同的大小,而不是具有窗口对象列表。
因此,我无法从window_3
切换到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文档:
– current_window_handle
用法:driver.current_window_handle
– window_handles
返回当前会话中所有窗口的句柄。
用法:driver.window_handles
如您所见,会话ID始终相同。
在这种情况下可能出什么问题了?
答案 0 :(得分:0)
如果您查看print(browser.window_handles)
的输出,则只有一个列表项始终是相同的。
['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']
这表示链接正在同一窗口中加载/刷新数据。因此,您不必切换到其他任何标签。
只要您看到新窗口/选项卡已打开,然后就可以始终切换到新窗口,然后在新窗口上执行操作。
切换到最新窗口:
driver.switch_to.window(driver.window_handles[-1])