当前位置: 首页 > 知识库问答 >
问题:

Selenium WebDriver:确定新窗口或选项卡是否打开以及是否有焦点

陈野
2023-03-14

另外,我知道如何使用Driver.getTitle,但它只返回父窗口的标题。在确定新打开的窗口或选项卡是否处于焦点时,我无法发现任何东西。

如果有可能处理这两个问题,至少有人能给我指明正确的方向吗?

共有1个答案

史俊德
2023-03-14

首先,

另外,我知道如何使用Driver.getTitle,但它只返回父窗口的标题。

这意味着您没有切换到新窗口。您需要切换到新窗口,然后验证标题。

    null
[Test]
    public void MultipleWindows_Test()
    {
        IWebDriver driver = new ChromeDriver(@"CHROME DRIVER PATH");

        //Navigate to URL for ex. http://www.w3schools.com/js/
        driver.Navigate().GoToUrl(@"http://www.w3schools.com/js/");
        driver.Manage().Window.Maximize();

        //Get Parent Window Handle
        string parentWindow = driver.CurrentWindowHandle;

        string newWindow = "";
        string expectedNewWindowTitle = "Tryit Editor v2.6";

        Thread.Sleep(2000); //Static wait is not recommended
        Console.WriteLine("Parent Window Title: " + driver.Title);

        //Click on the link to open new window
        IWebElement TryItYourselfLink = driver.FindElement(By.LinkText("Try it Yourself »"));
        TryItYourselfLink.Click();

        Thread.Sleep(2000); //Static wait is not recommended

        //Store all window handles in a list
        IList<string> allWindowHandles = driver.WindowHandles;

        //If allWindowHandles.Count is greater than 1 then you can say that new window has been opened.
        if (allWindowHandles.Count > 1)
        {
            Console.WriteLine("New window has been opened.");
        }

        //Get new window handle
        for (int i = 0; i < allWindowHandles.Count; i++)
        {
            if (allWindowHandles[i] != parentWindow)
            {
                newWindow = allWindowHandles[i];
            }
        }

        //Switch to new window handle.
        driver.SwitchTo().Window(newWindow);

        Console.WriteLine("New Window Title: " + driver.Title);

        //You can verify the title of new window to verify whether is in focus or not.
        Assert.AreEqual(expectedNewWindowTitle, driver.Title);
     }
 类似资料:
  • 问题内容: 我正在使用Selenium WebDriver。每个链接都会在新的浏览器窗口中打开。这对我来说不方便。如何更改它以便仅在新选项卡中打开? 问题答案: 硒目前无法切换标签。因此,我们迫使浏览器在新窗口中打开链接,但是由于我们能够切换窗口,因此我们迫使浏览器采用这种方法。这 可能 会在更高版本中修复

  • 我正在使用Selenium WebDriver。每个链接都在一个新的浏览器窗口中打开。对我来说不方便。我如何更改它,使它只在新选项卡中打开?

  • 问题内容: 我有一个选择框,当选择一个项目时会调用。Firefox默认会在新标签页中打开页面。但是,我希望页面在新窗口中打开,而不是在新标签页中打开。 我该怎么做? 问题答案: 给窗口一个“ specs”参数,该参数的宽度/高度为 有关所有可能的选项。 指定宽度/高度时,它将在新窗口(而不是选项卡)中打开它。

  • 问题内容: 这个问题已经在这里有了答案 : Target =’_ blank’以显示在新窗口中,而不是新标签中,可能吗? (9个答案) 5年前关闭。 有没有一种方法可以使链接在不使用JavaScript的情况下打开新的浏览器窗口(而非标签页)? 问题答案: 使用纯HTML 不能影响这一点-每个现代的浏览器(=用户)都可以完全控制此行为,因为它过去曾被滥用很多。 HTML选项 您可以打开一个新窗口(

  • 问题内容: 我有来自第三方开发人员的JavaScript文件。它具有一个具有链接的链接,该链接将当前页面替换为目标页面。我想在新标签页中打开此页面。 这是我到目前为止所拥有的: 谁能帮我吗? 问题答案:

  • 问题内容: 是否有可靠的跨浏览器方式来检测选项卡是否具有焦点。 场景是,我们有一个应用程序会定期轮询股票价格,如果页面没有重点关注,我们可以停止轮询并为每个人节省交通噪音,尤其是当人们热衷于打开具有不同投资组合的多个标签时。 是并且为此选择吗? 问题答案: 是的,并且应该适合您的方案: http://www.thefutureoftheweb.com/blog/detect-browser-win