Python 是否可以使用webdriver/Selenium获取用户实际查看的当前选项卡

Python 是否可以使用webdriver/Selenium获取用户实际查看的当前选项卡,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我正在尝试使用Selenium检查/监视用户使用的选项卡。但我发现驱动程序总是只监视浏览器打开后的第一个选项卡 我试着用这个 driver.current_window_handle 它显示了windows名称,但并不完全是用户实际使用的选项卡。它始终是第一个选项卡,除非我执行driver.swith\u to\u窗口 而且,我试着使用 handles = driver.window_handles 然后对句柄中的每个句柄执行此操作 driver.swith_to_window(handle

我正在尝试使用Selenium检查/监视用户使用的选项卡。但我发现驱动程序总是只监视浏览器打开后的第一个选项卡

我试着用这个

driver.current_window_handle
它显示了windows名称,但并不完全是用户实际使用的选项卡。它始终是第一个选项卡,除非我执行
driver.swith\u to\u窗口
而且,我试着使用

handles = driver.window_handles
然后对句柄中的每个句柄执行此操作

driver.swith_to_window(handle)
但这将中断用户的操作,因为浏览器将逐个切换选项卡

是否可以通过webdriver或selenium获取当前选项卡用户实际查看的窗口句柄、标题或索引

情景:

  • python开放浏览器
  • 用户打开选项卡1、选项卡2、选项卡3并访问网站
  • 用户视图选项卡2
  • selenium从tab2获取数据
  • 用户视图选项卡1
  • selenium从tab1中获取数据
  • 用户视图选项卡3
  • selenium从tab3获取数据…等等

  • 目前我只能从tab1中获取数据。若用户查看tab2,那个么selenium什么也不做,除非我将_切换到_窗口。但我不知道用户正在查看哪一个选项卡。

    与其逐个切换选项卡,不如直接给出所需的选项卡编号

    driver.switch_to_window(1)
    

    //1作为选项卡id,我很好奇为什么不直接切换到选项卡,因为您可能知道id

    它将比循环快得多

    司机。切换到车窗(把手)

    是的,这是可能的

    要切换窗口,请使用
    。切换到.window
    而不是
    。切换到\u window
    ,如下所示:

    driver.switch_to.window(driver.window_handles[1])
    print(driver.current_window_handle)
    
    [1]
    >请替换为所需的索引

    要获取标题,请使用:

    print(driver.title)
    
    要获取当前选项卡的索引,请使用:

    print(driver.window_handles.index(driver.current_window_handle))
    
    或者对每个循环使用
    ,如以下示例所示(参考您的场景):


    是的,我确实想切换到用户正在使用的窗口。但是,我不知道如何从选项卡用户实际查看中获取选项卡索引或句柄。请您解释一下“如果用户查看tab1/2/”是什么意思。代码更好。是的,我确实想切换到用户正在使用的窗口。但是,我不知道如何从选项卡用户视图中获取选项卡索引或句柄。当我得到窗口句柄数组时,我不知道用户看到的是哪一个。这总是一个修复选项卡吗?如果是的话,很可能是发动机罩这个把手是固定的(我需要仔细检查一下)对不起。“修复”选项卡是什么意思?我不明白我的意思是手柄可能总是恒定的。因此,您可以始终使用同一个句柄关闭该选项卡
    driver.get('https://google.com')
    driver.execute_script('window.open("https://yahoo.com");')
    driver.execute_script('window.open("https://gmail.com");')
    
    for handle in driver.window_handles:
        driver.switch_to.window(handle)
        print(driver.window_handles.index(handle))
        print(handle)
        print(driver.title)