【问题标题】:Identify popup window Selenium in IE11 32 bit C#在 IE11 32 位 C# 中识别弹出窗口 Selenium
【发布时间】:2019-01-02 11:35:42
【问题描述】:

我无法识别要处理的弹出窗口。这是我尝试过的:

            string dialog4;
            string dialog5;
            try
            {
                IAlert alert = driver.SwitchTo().Alert();
                dialog4 = alert.Text;
                alert.Accept();
                dialog5 = "nothing alert";
            }
            catch (NoAlertPresentException f)
            {
                try
                {
                    dialog4 = driver.SwitchTo().Frame(0).Title;// "dialog4";//
                    dialog5 = driver.SwitchTo().Frame(1).Title;// "dialog5";// 
                }
                catch (NoSuchFrameException e)
                {
                    try
                    {
                        dialog4 = driver.SwitchTo().Window("iHTKK").Title;
                        dialog5 = "nothing window";
                    }
                    catch
                    {
                        dialog4 = "nothing 4";
                        dialog5 = "nothing 5";
                    }
                }
            }
  • 点击红色高亮按钮后,代码等待 10 秒,webdrive 等待 30 秒,以确保有时间捕捉弹出窗口。
  • 代码返回“nothing 4”和“nothing 5”。
  • xPath 在这个项目中不能很好地工作,我不知道为什么,但我之前尝试过使用不同的元素,但 xPath 不起作用。
  • 除非我响应此弹出窗口,否则我无法打开 F12。我可以在此弹出窗口存在之前和之后打开它
  • 我也试过找 在网站(所有 HTML 和 .js 文件)中使用 Debugger 和 Dom Explorer 选项卡中的 Developer tool (F12) 中的搜索功能获取弹出框中的信息。 什么都没找到。这不是我的网站。
  • 我用 Window spy 附加了屏幕截图(AutoHotkey 附带的实用程序帮助识别窗口)。弹出窗口是由一个名为“jp2lancher.exe”的进程创建的。如果这值得关注,我的 Java 版本是 8.x 32 位。虽然弹出窗口似乎来自不同的进程,但在我响应该弹出窗口之前,我无法与 IE 交互。但是,我可以通过任务栏中的“关闭所有窗口”操作将其关闭,并且弹出窗口仍然存在。

我还能做些什么来识别这个弹出窗口?

【问题讨论】:

  • 它是什么类型的应用程序?它看起来不像浏览器警报,所以SwitchTo.Alert() 不起作用。你在开发者模式下检查弹窗的元素类型了吗?
  • 存在此弹出窗口时,我无法打开 F12。我可以在响应此弹出窗口之前和之后打开。不在的时候。
  • 这很奇怪。出现警报时 IE 可能不允许 F12,请尝试检查 Chrome 或 Firefox。如果我记得,Firefox 有一个用于浏览器事件的记录和播放扩展,它会生成一个脚本。这可能会给你一些想法。
  • IE 驱动程序只能处理由浏览器本身产生和拥有的警报样式对话框(使用 JavaScript alert()confirm()prompt() 函数创建的对话框)。正如您所注意到的,这个特定的对话框似乎不是其中之一,因为它是由另一个可执行文件创建的。这是怎么做到的?我的第一直觉是怀疑浏览器插件。无论如何,IE 驱动程序将无法处理此弹出窗口。
  • @JimEvans 我真的希望我不必使用新工具,因为这会给很多人带来更多工作。

标签: c# selenium-webdriver popup internet-explorer-11 ui-automation


【解决方案1】:

经过测试,确认 Window Spy 工具是识别弹出窗口是否由浏览器/驱动程序生成的好方法。在ahk_exe 行中,它会说一个窗口由哪个可执行文件运行。就我而言,弹出窗口确实是从网站加载并在我的计算机上运行的 Java 插件。我终于使用 AutoIt 来处理那个窗口。如果有人使用 AutoIt,请记住它是一种不同的语言,所有操作都必须以其格式启动。

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多