【问题标题】:open new url window without knowing the url Selenium webDriver在不知道 url Selenium webDriver 的情况下打开新的 url 窗口
【发布时间】:2015-07-06 13:28:38
【问题描述】:

在所有 Selenium 鳕鱼示例中,如果我想打开 webdriver 特定的网站页面,它会像这样

`chromeDriver.Navigate().GoToUrl(站点名);

但现在我有一个问题,当我点击网页时,我正在测试其打开的新网站(第 3 方网站),但我无法提前知道 URL。 所以有人知道,我怎么知道打开的新页面中的 URL 是什么?

【问题讨论】:

    标签: c# selenium automation


    【解决方案1】:

    【讨论】:

    • 这不是远程驱动,我在本地运行鳕鱼
    • 所有驱动程序都扩展了远程驱动程序并具有 driver.Url 属性。
    • 在您发送的内容中,我没有可以在事先不知道的情况下转到 url 的属性。也许我错过了什么?
    • 如果 webdriver 在特定页面上,它可以获取 url。但我的问题是我站在一个页面上,然后点击一些文件并打开一个新页面,我需要知道它的网址
    • 您是在另一个窗口中打开新页面还是什么?您也可以导航到其他窗口,然后获取该 driver.Url,然后返回原始窗口并在那里使用它。
    【解决方案2】:

    试试这个:

    driver.get("https://stackoverflow.com");
    Actions action = new Actions(driver);
    action.moveToElement(driver.findElement(By.xpath("//*[@id='nav-tags']"))).sendKeys(Keys.SHIFT).click().build().perform();
    
    // You have opened your unknown site in a new window till now
    
    String currentWindowHandle = driver.getWindowHandle();
    ArrayList < String > windowHandles = new ArrayList < String > (driver.getWindowHandles());
        for (int i = 0; i < windowHandles.size(); i++) {
        if (windowHandles.get(i).equals(currentWindowHandle)) {
    
            //SwitchTo new Window
            driver.switchTo().window(windowHandles.get(i + 1));
    
            //Do your stuff like get URL that tou need
            System.out.println(driver.getCurrentUrl());
            System.out.println(driver.getTitle());
    
            //Close the newly opened window
            driver.close();
        }
    }
    driver.switchTo().window(currentWindowHandle);
    

    这将在新窗口中打开标签窗口并获取该窗口的 URL,假设这就是您想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-22
      • 2017-10-29
      • 2011-09-22
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      相关资源
      最近更新 更多