代码之家  ›  专栏  ›  技术社区  ›  ivanleoncz velhala

窗口处理不在python selenium上更新

  •  0
  • ivanleoncz velhala  · 技术社区  · 5 年前

    我正在模拟一个用户与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总是相同的。

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

    0 回复  |  直到 5 年前
        1
  •  1
  •   supputuri    5 年前

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

    ['cdwindow-18d629a1bfc3391c5ae352f02768efa3']

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

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

    切换到最新窗口:

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