3

Selenium IDEで記録するとき、ポップアップで「OK」ボタンをクリックでき、次を使用してクリックできると予想されます

driver.findElement(By.linkText("OK")).click();

しかし、そうではありませんでした。

同様に、これは機能しません。

driver.switchTo().alert().accept();

Selenium は NoAlertPresent 例外をスローします。ポップアップしているのがアラートでない場合、それは何ですか? そして、どうすれば「はい」をクリックできますか。

4

3 に答える 3

2

そのような場合、ページ上のアラートの存在を確認(確認)し、存在する場合は受け入れたいと思います。次のようになります。

public boolean isAlertPresent() {

  boolean presentFlag = false;

  try {

   // Check the presence of alert
   Alert alert = driver.switchTo().alert();
   // Alert present; set the flag
   presentFlag = true;
   // if present consume the alert
   alert.accept();

  } catch (NoAlertPresentException ex) {
   // Alert not present
   ex.printStackTrace();
  }

  return presentFlag;

 }

ここで詳細を取得できます。また、段階的なデバッグも忘れないでください。

これがお役に立てば幸いです。

于 2012-10-15T11:32:35.260 に答える
2

それは何でもかまいません。あなたは私たちにそれを伝えているはずです。

それがJava Scriptアラートである場合、これは機能するはずです

driver.switchTo().alert().accept();

少なくとも、「OK」ボタンが Web アプリによって自動選択/強調表示されている場合は、Enter/Return キー ストロークの送信を試すことができます。

import org.openqa.selenium.Keys
WebElement.sendKeys(Keys.RETURN);

アップデート


また、アラートをクリック/受け入れようとしているときにアラートが存在しないことが原因である可能性もあります。簡単に確認するには、4 ~ 5 秒間スリープ状態にしてから を試してくださいdriver.switchTo().alert().accept();。確認されたら、tryandcatchループ (任意の例外処理) でアラートが存在するのを待ちます。

于 2012-10-15T10:22:21.833 に答える
1

最新バージョンの webdriver を使用している場合は、2.20 を超えるものに影響を与えます。

driver.switchTo().alert().accept();

アラートが、クリックしたときに表示されるものと同様の JavaScript アラートである場合、機能するはずです。

アラート デモまたはポップアップ デモの確認

更新しました

ここで、このコードはアラートを受け入れるのに役立ちます

driver = new FirefoxDriver();
String baseUrl = "http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(baseUrl);
driver.switchTo().frame(0);
driver.findElement(By.cssSelector("input[type=\"button\"]")).click();
driver.switchTo().alert().accept();
于 2012-10-15T10:26:25.290 に答える