当用户使用selenium webdriver单击弹出窗口上提供的按钮时,打开新选项卡

时间:2015-04-30 11:27:43

标签: selenium-webdriver

有一个关于Selenium WebDriver的问题是一个场景

  1. 我登录了该应用程序
  2. 点击某个链接
  3. 它会打开一个包含iframe
  4. 的新弹出窗口
  5. 此弹出窗口上有一个预览按钮,如果我手动点击它会在上一个父窗口中打开一个新选项卡但如果我使用selenium webdriver点击此按钮则会打开新窗口
  6. 我想使用selenium webdriver打开新标签,点击此预览按钮任何解决方案?

2 个答案:

答案 0 :(得分:0)

这些是你应该采取的步骤。

  • 登录应用程序
  • 获取当前窗口句柄
  • 查找窗口句柄列表EXCEPT currentWindow handle
  • switchTo()新打开的窗口句柄,switchTo() iframe
  • 点击iframe
  • 中的按钮
  • 再次获取窗口句柄
  • switchTo()新打开的窗口
  • 执行一些操作,关闭除父母以外的所有窗口。

示例可能如下所示。 注意:C#代码

public void PopupWindowHandle()
{
    //logged into application
    //get current window handle
    string prentWindowHandle = Driver.CurrentWindowHandle;

    //click should generate a new tab
    Driver.FindElement(By.Id("id")).Click();

    //get window handle counts. In your case should be 2
    List<string> windowHandles = Driver.WindowHandles.ToList();

    //switchTo newly opened window handle
    foreach (string handle in windowHandles)
    {
        if (handle != prentWindowHandle)
        {
            Driver.SwitchTo().Window(handle);
            //switch focus into iframe
            Driver.SwitchTo().Frame(Driver.FindElement(By.CssSelector("Iframe Selector")));
            //click should generate another window
            Driver.FindElement(By.Id("id")).Click();

            //should be 2 in total
            List<string> newHandles = Driver.WindowHandles.ToList();

            foreach (string newHandle in newHandles)
            {
                if (newHandle != handle)
                {
                    Driver.SwitchTo().Window(newHandle);
                    //do some work
                    Driver.Close();
                    Driver.SwitchTo().Window(handle);
                    break;
                }
            }

            Driver.Close();
            Driver.SwitchTo().Window(prentWindowHandle);
            break;
        }
    }
}

答案 1 :(得分:0)

我猜你没有使用chrome。:) 通常,webdriver强制浏览器打开一个新窗口而不是一个选项卡,通过切换窗口处理更容易。像IE和Firefox一样,但chrome会打开一个新选项卡而不是一个新窗口,它仍然支持切换窗口。我是如何找到的,试一试。

相关问题