【问题标题】:Selenium: How to get current url of a tab without switching to it?Selenium:如何在不切换到选项卡的情况下获取当前的 url?
【发布时间】:2017-05-19 09:18:31
【问题描述】:

我在使用网络浏览器时经常打开数百个标签,这会降低我的计算机速度。所以我想用 Python 和 Selenium 编写一个浏览器管理器,它可以打开选项卡并可以保存这些选项卡的 url,然后我可以稍后重新打开它们。

但似乎在 Python Selenium 中获取选项卡 URL 的唯一方法是调用 get_current_url

我想知道是否有一种方法可以在不切换到它的情况下获取选项卡的 url?

【问题讨论】:

  • 如何打开标签?通过单击父页面中的链接?
  • 没有具体的方式。它们可以由用户打开,通过父页面中的 javascript 打开,或者通过右键单击链接并选择“在新选项卡中打开”......我想如果不切换到 selenium,可能无法获取选项卡的 url,也许是 selenium不适合这样做。

标签: python selenium selenium-webdriver window-handles getcurrenturl


【解决方案1】:

没有其他方法可以在不切换到特定的TAB的情况下获取浏览器的特定tab titles,因为Selenium需要DOM Tree上的focus才能执行任何操作。

【讨论】:

    【解决方案2】:

    只需转到正在切换到其他选项卡的文本链接并将其@href 属性链接保存到字符串或列表中

    【讨论】:

    • 我不明白。标签可以在不点击链接的情况下打开,它可以由用户打开或通过 javascript 重定向到新的 url 而无需任何用户的操作!
    • 如果不导航到其他标签 URL,就无法实现。因为 Selenium 仅适用于当前活动选项卡。要获取其他选项卡的 URL,您需要切换到它
    • 谢谢。也许我会看看 webdrivers 是如何工作的,或者研究编写浏览器扩展,或者尝试通过 win32 api 获取 url:stackoverflow.com/questions/11645123/…
    【解决方案3】:

    我不确定您的实际情况,但我们可以获取当前页面中所有超链接的列表。这个想法是收集所有带有标签“a”的网络元素,然后获取它们的“href”属性值。以下是 Java 中的示例代码。请相应修改。

    //Collecting all hyperlink elements
    List<WebElement> allLinks = driver.findElements(By.tagName("a"));
    
    //For each Hyperlink element getting its target href value 
    for(WebElement link: allLinks)
    {
        System.out.println(link.getAttribute("href"));
    }
    

    希望这对您有所帮助。 谢谢。

    【讨论】:

      【解决方案4】:

      我的建议是为此使用扩展程序或编写/扩展您自己的。
      似乎有一些类型,例如
      https://addons.mozilla.org/en-US/firefox/addon/export-tabs-urls-and-titles/
      https://chrome.google.com/webstore/detail/save-all-tab-urls/bgjfbcjoaghcfdhnnnnaofkjbnelkkcm?hl=en-GB

      据我所知,如果不先切换到网页,就无法获取/访问网页的网址。

      【讨论】:

        猜你喜欢
        • 2023-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-12
        • 1970-01-01
        • 2015-12-03
        • 2015-04-27
        相关资源
        最近更新 更多