1

rediff.com でアラートを開くための次の Selenium スクリプトがあります。

public class TestC {
    public static void main(String[] args) throws InterruptedException, Exception {
        System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe");
        WebDriver driver = new ChromeDriver();   
        driver.get("http://www.rediff.com/");
        driver.findElement(By.xpath("//*[@id='signin_info']/a[1]")).click();
        driver.findElement(By.id("btn_login")).click();
        Thread.sleep(5000);
        Alert alert=driver.switchTo().alert();
        alert.accept();
    }
}

このまったく同じスクリプトが Firefox と IE9 で正常に動作していますが、アラートを開いた後に Google Chrome を使用すると、残りのコードが動作しません。主なことは、例外、エラー、または何も表示されないことです。

できるだけ早く解決策を提供してください。どうもありがとう!

注: ブラウザの設定などを変更する必要がある場合は、お知らせください。

Selenium version:Selenium(2) Webdriver
OS:Windows 7
Browser:Chrome
Browser version:26.0.1410.64 m
4

2 に答える 2

1

あなたの問題は非常に一般的なものであると確信しています。そのため、を使用することはお勧めThread.sleep()しません。コードがAlert表示されたときにのみ実行されることを保証するものではなく、アラートが表示されている場合でもテストに時間がかかる可能性があるためです。 .

以下のコードは、何らかのアラートがページに表示されるまで待機する必要があります。この Firefox と IE9 も使用することをお勧めします。

public class TestC {
    public static void main(String[] args) throws InterruptedException, Exception {
        System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe");
        WebDriver driver = new ChromeDriver();   
        WebDriverWait wait = new WebDriverWait(driver, 5);

        driver.get("http://www.rediff.com/");
        driver.findElement(By.xpath("//*[@id='signin_info']/a[1]")).click();
        driver.findElement(By.id("btn_login")).click();

        wait.until(ExpectedConditions.alertIsPresent());

        Alert alert = driver.switchTo().alert();
        alert.accept();
    }
}

ここで行われるほとんどのことは、ページに a が存在するとThread.sleep()すぐにコード上で実際にのみ前進する条件のために、を変更することです。alert()誰かがそうするとすぐに、それに切り替えて受け入れます。

ExpectedConditionsクラス全体の Javadoc は、ここにあります

于 2013-05-08T11:26:10.057 に答える