1

首先,我想为我的英语道歉,我会尽力做到尽可能清楚。

我在 Java 中遇到了 Selenium 的问题。事实上,我使用了一个门户,我需要登录才能浏览它。每次打开此门户时,我都必须连接,会出现一个弹出窗口。我必须使用特定的帐户来执行特定的操作,然后我必须断开与该帐户的连接并重新连接另一个帐户来管理一些事情。当我使用机器人单击“断开连接”按钮时,我可以使用“Enter”键关闭出现的弹出窗口。然后,我被封锁了。窗口消失了,好的,但程序崩溃并告诉我这个错误:“Modal dialog present: Demande de Confirm - Confirmez-vous la fermeture du porttail ?” 在这一步之后,我什至无法再次打开门户。我也有一个连接问题,实际上浏览器会提醒我的用户名和密码,但我需要更改帐户。所以我想到了擦除cookies。我有点失落。

我的代码是:

        driver.findElement(By.id("disconnectBtn")).click();
        WaitUtils.waitFor(5000);
        Robot r = new Robot();
        r.keyPress(KeyEvent.VK_ENTER);


        WaitUtils.waitFor(5000);


        driver.manage().deleteAllCookies();
        System.out.println("I have deleted cookies.");


        allerSurPortail("L1", driver);
        System.out.println("I have opened a second time the portal.");
        accueilPortailPage.fermerFrame(driver);
        WaitUtils.waitFor(5000);

我的功能“fermerFrame”允许关闭我在网站上连接时出现的弹出窗口,它可以工作。

恢复:

  • 我的程序打开了门户,其中显示了一个弹出窗口以进行连接。
  • 连接后,我必须在网站上做一些事情(我不为测试做的事情)
  • 我点击断开连接按钮,这个弹窗出现断开连接弹窗
  • 我创建了一个机器人按 Enter 按钮关闭此弹出窗口,因此关闭整个浏览器。在这里我有这个错误错误消息(它是焦点问题吗?)
  • 我想再次打开门户并连接另一个登录名

我试图捕捉这个错误消息,但我不明白为什么它仍然崩溃,并且它没有进入捕捉..

        driver.findElement(By.id("disconnectBtn")).click();

        try {
            System.out.println("Entering in the first try");
            Robot r = new Robot();
            r.keyPress(KeyEvent.VK_ENTER);
        } catch (org.openqa.selenium.UnhandledAlertException f) {
            try {
                System.out.println("Entering in the second try");
                Alert alert = driver.switchTo().alert();
                String alertText = alert.getText();
                System.out.println("Alert data: " + alertText);
                alert.accept();
                Robot r = new Robot();
                r.keyPress(KeyEvent.VK_ENTER);
            } catch (NoAlertPresentException e) {
                System.out.println("Entering in the second catch");
                e.printStackTrace();
            }
        }

先感谢您。

4

1 回答 1

0

如果在单个测试用例中使用了两个不同的凭据集,最好为第二次登录打开新的匿名窗口:

Robot rob = new Robot();                          
rob.keyPress(KeyEvent.VK_CONTROL); 
rob.keyPress(KeyEvent.VK_SHIFT);
rob.keyPress(KeyEvent.VK_P); 
rob.keyRelease(KeyEvent.VK_CONTROL);
rob.keyRelease(KeyEvent.VK_SHIFT);
rob.keyRelease(KeyEvent.VK_P);
ArrayList<String> windows = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(windows.get(1));
于 2018-05-14T08:12:36.177 回答