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

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

柴翰藻
2023-03-14

有一个关于Selenium WebDriver的问题给出了一个场景

  1. i登录到应用程序
  2. 单击某些链接
  3. 它将打开一个新的弹出窗口,其中包含iframe
  4. 此弹出窗口上有一个预览按钮,如果我手动单击该按钮,它将在上一个父窗口中打开一个新选项卡,但如果我使用selenium webdriver单击该按钮,它将打开新窗口
  5. 我想通过单击此预览按钮使用selenium webdriver打开新选项卡任何解决方案

共有1个答案

呼延英奕
2023-03-14

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

  • 登录应用程序
  • 获取当前窗口句柄
  • 查找除当前窗口句柄之外的窗口句柄列表
  • 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;
        }
    }
}
 类似资料:
  • 作为我程序的一部分,我需要有一个按钮,当用户单击它时,它会打开一个新窗口。 嗯,我想我应该有一个类来创建框架并按按钮调用它。但我不知道该怎么开始。我刚刚在程序中找到了我的按钮,但它不起作用。有人能告诉我怎么做吗?或对其进行编码。

  • HTML代码 现在,我正在使用selenium web Driver和Testng,使用Qooxdoo框架(它是javaScript框架)开发的web应用程序实现自动化。 在这方面,我已经实现了一些功能,但是有些弹出窗口是使用嵌套的 创建的,selenium弹出窗口处理程序无法处理这些功能。通过使用action类,我可以在文本区域写(通过下面提到selenium代码),这是在弹出(找到附件)中显示

  • 问题内容: 我遇到的情况是,单击按钮打开带有搜索结果的新浏览器窗口。 有什么方法可以连接并聚焦到新打开的浏览器窗口吗? 并使用它,然后返回到原始(第一个)窗口。 问题答案: 您可以在以下窗口之间切换:

  • 我是Tkinter库的新手,我想知道当打开新窗口时如何禁用按钮。例如,如果单击主窗口上的按钮,将打开一个新窗口,并且主窗口上的所有按钮将被禁用。窗口关闭后,应重新启用按钮。 下面是我的代码示例: 额外:如果有人能告诉我如何在不关闭整个“Tkinter”程序的情况下关闭“root”窗口,我将不胜感激。例如,如果一个辅助窗口打开,我希望能够关闭第一个窗口,或者至少最小化它。

  • 问题内容: 我遇到的情况是,单击按钮打开带有搜索结果的新浏览器窗口。 有什么方法可以连接并聚焦到新打开的浏览器窗口吗? 并使用它,然后返回到原始(第一个)窗口。 问题答案: 你可以在以下窗口之间切换: