1

まず最初に、私の英語についてお詫びしたいと思います。できるだけ明確になるように最善を尽くします。

Java の Selenium で問題が発生しました。実際、私はポータルを使用しており、閲覧するにはログインする必要があります。このポータルを開くたびに接続する必要があり、ポップアップ ウィンドウが表示されます。特定のアクションを実行するには特定のアカウントを使用する必要があり、その後、このアカウントから切断して別のアカウントに再接続して、いくつかのことを管理する必要があります。ロボットで「切断」ボタンをクリックすると表示されるポップアップを「Enter」キーで閉じることができます。そして、私はブロックされています。ウィンドウは消えますが、プログラムがクラッシュして次のエラーが表示されます。この手順の後、ポータルを再度開くことさえできません。接続の問題もあります。実際、ブラウザはユーザーとパスワードを思い出させますが、アカウントを変更する必要があります。そこで、クッキーを消去することを考えました。私は少し迷っています。

私のコードは次のとおりです。

        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」は、ウェブサイトに接続しているときに表示されるポップアップを閉じることを許可します。

再開します:

  • 私のプログラムは、接続するためのポップアップを表示するポータルを開きます。
  • 接続したら、Web サイトでいくつかのことを行う必要があります (テストでは行わないこと)
  • 切断ボタンをクリックすると、このポップアップが表示されます切断ポップアップ ウィンドウ
  • Enterボタンを押してこのポップアップを閉じるロボットを作成するので、ブラウザ全体を閉じます。ここに、このエラーエラー メッセージがあります(Is it a focus problem?)
  • ポータルを再度開き、別のログインで接続したい

このエラーメッセージをキャッチしようとしましたが、なぜまだクラッシュしているのか理解できず、キャッチに入りません..

        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