社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

窗口处理不在python selenium上更新

ivanleoncz • 5 年前 • 1465 次点击  

我正在模拟一个用户与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
 
1465 次点击  
文章 [ 1 ]  |  最新文章 5 年前
supputuri
Reply   •   1 楼
supputuri    6 年前

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

['cdwindow-18d629a1bfc3391c5ae352f02768efa3']

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

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

切换到最新窗口:

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