繁体   English   中英

机器人框架关闭浏览器弹出窗口

[英]Robot framework close browser popup window

我单击应用程序中网页上的链接,然后弹出一个新窗口(我使用的是Internet Explorer 11,不允许使用任何其他浏览器)。

该窗口以html页面的形式从以下代码打开: href=fileName.html

但是,Robot框架的Selenium2Library关键字都不会关闭弹出窗口,例如“ Close Window ,根据文档说,“关闭当前打开的弹出窗口”。 但是,此命令关闭浏览器窗口,而不是弹出的窗口。

我还尝试使用“ Get Window命令的变体,例如“ Get Window Titles或“ Get Window Identifiers ,但是它返回的不是浏览器主窗口,就是没有窗口。

有没有办法关闭弹出的窗口?

谢谢

编辑:

这是窗口的html链接:

<a title="Birth Proof Code More Information" id="uef-help0" href="birthProofHelp.html" target="_blank" rel="help" data-uefid="uef-li-hlp" data-modal-disable="true">More Info</a>

这是窗口的源代码:

!DOCTYPE HTML>
<html>
    <head>
        <title>Birth Proof</title>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    </head>
    <body>
        A - ALLEGED<br>
        B - BIRTH/BAPTISMAL CERTIFICATE (BEFORE THE AGE OF 5)  / PREFERRED BIRTH PROOF<br>
        C - DEFINITION OF 'CONVINCING EVIDENCE' MET<br>
        F -  PREVIOUSLY ESTABLISHED BY THE SSA<br>
        Q - ESTABLISHED BASED ON EVIDENCE OTHER THAN THAT COVERED UNDER CODES 'B' AND 'C'<br>
    </body>
</html>

我尝试休眠60秒以使窗口出现,但仍然无法正常工作。

窗口真的出现了。 就像我说的,“ Close Window关闭主浏览器窗口,而不是弹出的窗口。

根据机器人文档,“ Get Window Titles执行以下操作:

返回当前浏览器实例已知的所有窗口的标题。

如果其他所有方法均失败,则可以使用java.awt.robot。 使用Windows快捷方式关闭窗口:ctrl + w。

编辑:首先添加如何聚焦窗口(我已经使用了一段时间,它对我有用,我想我最初是从这里得到的,@ Avinash Jha的回答):

    import com.sun.jna.Native;
    import com.sun.jna.platform.win32.WinDef.HWND;
    import com.sun.jna.win32.W32APIOptions;

    ...

    public interface User32 extends W32APIOptions {
        User32 instance = (User32) Native.loadLibrary("user32", User32.class, DEFAULT_OPTIONS);
        boolean ShowWindow(HWND hWnd, int nCmdShow);
        boolean SetForegroundWindow(HWND hWnd);
        HWND FindWindow(String title);
        int SW_SHOW = 1;
    }

    ...

    User32 user32 = User32.instance;
    HWND hWnd = user32.FindWindow("window title");
    user32.ShowWindow(hWnd, User32.SW_SHOW);
    user32.SetForegroundWindow(hWnd);

然后,机器人零件应类似于:

import java.awt.*;
import static java.awt.event.KeyEvent.*;

...

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_CONTROL);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM