Py学习  »  Python

窗口处理不在python selenium上更新

ivanleoncz • 5 年前 • 1468 次点击  

我正在模拟一个用户与selenium的交互,在这里,我基本上,例如,点击3次导航模式。

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

所以,我不能改变 window_3 window_1 ,因为 当前窗口句柄 总是一样的…

下面是一个示例,以演示问题(单击链接的代码被抑制,以便将问题集中在我遇到问题的代码上):

# 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文件:

当前窗口句柄

用法:driver.current_window_handle

窗户把手

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

用法:driver.window_handles

如您所见,会话id总是相同的。

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40631
 
1468 次点击  
文章 [ 1 ]  |  最新文章 5 年前
supputuri
Reply   •   1 楼
supputuri    6 年前

如果你看看 print(browser.window_handles) 只有一个列表项总是一样的。

['cdwindow-18d629a1bfc3391c5ae352f02768efa3']

指示链接正在同一窗口中加载/刷新数据的。所以,你不必切换到任何其他标签。

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

切换到最新窗口:

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