1

ここで少し奇妙な問題に直面しています。ボタンをクリックして 2 番目のウィンドウを開くと、スクリプト全体がハングします。このアクションの次の行は aSystem.out.println();であり、ウィンドウを手動で閉じるまでコンソールに出力されません。ウィンドウ ハンドルとスイッチを取得するためのロジックを追加しましたが、コードがその点に到達しているとは思えません。以下のコードを見つけてください。

import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.ie.InternetExplorerDriverService;
import org.openqa.selenium.Keys;
import java.util.Iterator;

public class ACHClearTransfer {
public static void main(String[] args){
System.setProperty("webdriver.ie.driver","C:/Progra~1/IEDriverServer.exe");
    System.setProperty("webdriver.ie.driver.extractpath", "C://Progra~1");  
    WebDriver driver = new InternetExplorerDriver();
    try{
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.get("https://XXXXXXXX.com"); 
        Thread.sleep(3000);
        String parentWindowHandler = driver.getWindowHandle();
        System.out.println("parent window handler is "+parentWindowHandler);
        driver.findElement(By.xpath("//input[@type='text' and @name='tbUsername']")).sendKeys("********");
        driver.findElement(By.xpath("//input[@type='password' and @name='tbPassword']")).sendKeys("*******");
        System.out.println("Entered ID and password");
        driver.findElement(By.xpath("//span[text()='Log in']")).click();
        driver.findElement(By.xpath("//input[@type='password' and @name='challengeAnswer']")).sendKeys("*******");
        driver.findElement(By.xpath("//span[text()='Continue']")).click();
        System.out.println("Continue button clicked");
        Thread.sleep(5000);
        System.out.println("Thread sleep completed.");
        String subWindowHandler = null;
        try{
            System.out.println("Inside try");
            Set<String> handles = driver.getWindowHandles(); // get all window handles
            System.out.println("All window handles "+handles);

            for(String handle:handles){
                if(!parentWindowHandler.equals(handle)){
                    subWindowHandler = handle;
                }
            }                  
        }
        catch(Exception e){
            e.printStackTrace();
        }

        driver.switchTo().window(subWindowHandler);
        System.out.println(driver.getTitle());
        driver.close();
        Thread.sleep(2000);

        driver.switchTo().window(parentWindowHandler); 
        System.out.println("Back in parent window");
        System.out.println(driver.getTitle());
        Thread.sleep(2000);

        driver.findElement(By.xpath(".//*[@id='navAcc']/a")).click();
        driver.findElement(By.xpath(".//*[@id='portfolioDepositsScheduledTransfers']/a")).click();

        boolean temp = driver.findElement(By.xpath("(//a[text()='Delete'])[1]")).isDisplayed();

        while(temp==true){
            driver.findElement(By.xpath("(//a[text()='Delete'])[1]")).click();
            Thread.sleep(2000);
            temp = driver.findElement(By.xpath("(//a[text()='Delete'])[1]")).isDisplayed();

        }
    }
    catch(Exception e){
        e.printStackTrace();
    }
    finally{
        driver.quit();
    }
}
}

[続行] ボタンを押した後に問題が発生します。これにより、新しいウィンドウが開きます。System.out.println("Continue button clicked")ウィンドウを手動で閉じるまで、次はコンソールに表示されません。助けてください。

PS: コーディング スタイルはご容赦ください。これは単なる試みです。

4

1 に答える 1

0

これは古いトピックですが、IEDriverServer のバージョンを確認してください。古いバージョンでは、モーダル ダイアログ ウィンドウを管理する際にいくつかの問題がありました (いくつかの問題は、バージョン 2.38 から修正されました。changelog を参照してください)。おそらくそれが役立つでしょう。私は同様の問題を抱えていて、バージョンを更新すると問題が解決しました。

于 2015-09-14T22:27:40.413 に答える