【问题标题】:How to get the URL of the current window using Selenium WebDriver in C#?如何在 C# 中使用 Selenium WebDriver 获取当前窗口的 URL?
【发布时间】:2017-02-13 22:41:49
【问题描述】:

在我的应用程序中登录时,它会导航到另一个页面。现在我需要在 selenium C# 中使用 WebDriver 获取新的 URL。

我找不到任何功能来执行此操作。我试过driver.Urldriver.getLocation()driver.getCurrentUrl(),但在我的 C# 应用程序中没有任何工作。那么是否有可能以某种方式获取当前 URL?导航后?

【问题讨论】:

    标签: c# selenium selenium-webdriver


    【解决方案1】:

    是的,您可以获取当前页面的 URL。实例化您的驱动程序,然后获取驱动程序的 Url 属性。

    代码 sn-p:

    IWebDriver driver = new FirefoxDriver();
    String currentURL =  driver.Url;
    

    帮助: Selenium: Find the base Url

    【讨论】:

    • 这并不总是有效的。如果您使用 Navigate().goToUrl(...) 显式访问 url,那么它将起作用。但如果你 f.ex.单击将您带到另一个网址的链接,再次调用 driver.Url 将为您提供旧网址,而不是当前网址。
    • @FrankH。这在技术上是不正确的。 Driver.Url 返回当前浏览器 URL。听起来您可能需要等待新页面加载后才能返回 URL。这取决于网站和页面转换的速度。
    • 这是一个简单又好的方法,但是你应该等待页面加载或导航成功,否则你会得到一个旧的URL或者什么都没有。
    • @FrankH。仍然注意到相同的行为,有什么解决方法吗?
    • 如果 selenium 通过单击 javascript 链接打开一个新选项卡,则此值永远不会更新,因此此方法不起作用
    【解决方案2】:
    IWebDriver driver = new OpenQA.Selenium.IE.InternetExplorerDriver("C:\\");
    Console.WriteLine("url "+ driver.Url);
    

    driver.Url 为您提供当前 url

    【讨论】:

      【解决方案3】:
      WebDriver driver = new WebDriver();
      String currentURL =  driver.getCurrentURL();
      This will give you current URL
      

      【讨论】:

        【解决方案4】:

        如果标签是由 javascript 按钮打开的,则此页面上的方法不起作用。在这种情况下,您需要执行以下操作:

        wait.Until(wd => wd.WindowHandles.Count == 2);
        
        var handles = _driver.WindowHandles;
        
        _driver.SwitchTo().Window(handles.Last());
        
        Console.WriteLine(_driver.Url);
        

        通过获取所有窗口句柄切换到选项卡设置 URL 值

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-05
          • 1970-01-01
          • 2012-07-17
          • 2011-11-12
          • 1970-01-01
          • 2015-02-23
          相关资源
          最近更新 更多