# 9 倍。 WebDriver – 处理警报/弹出框

> 原文： [https://javabeginnerstutorial.com/selenium/9x-webdriver-handling-alerts-popup-box/](https://javabeginnerstutorial.com/selenium/9x-webdriver-handling-alerts-popup-box/)

嗨呀爱好者！ 想知道为什么 Selenium WebDriver 中存在 Alert 界面？ 好吧，我的朋友，对于您所寻找的信息，仅此帖子即可。 我们将讨论基本上属于三种类型的弹出框-警报框，确认框和提示框。 与往常一样，我们有[演示站点](https://chandanachaitanya.github.io/selenium-practice-site/)来说明这些概念。

**注意：**

*如果网页上出现一个弹出框，则只要不接受或关闭警报，用户就无法对基础页面执行任何操作。 请注意，如果您尝试使用警报访问网页上的任何元素，则可能会碰到“`UnhandledAlertException`：存在模态对话框”。*

## 1.警报框

一个简单的警报框通常用于将信息传递给用户或发出一些警告。 除非单击“确定”按钮，否则用户无法继续进行操作。

JavaScript 代码：

```java
window.alert("This is a simple alert box! \nYou can't escape from me until you click 'OK'!");
```

![Alert Box](img/ef37d2f8b6773bd5e6f2e813f2a9c463.png) 

## 2\. **确认框**

确认框为用户提供了两个选项，以验证/接受或关闭某些内容。 用户必须单击“确定”或“取消”才能继续。 确认弹出框返回布尔值。 当用户点击“确定”时返回 true，而当点击“取消”时返回 false。

JavaScript code:

```java
window.confirm("Click 'OK' or 'Cancel'.");
```

![Confirm Box](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20473%20231'%3E%3C/svg%3E)

<noscript><img alt="Confirm Box" class="alignnone size-full wp-image-12511" height="231" src="img/eb42ced4a961c35a4e35d860b23ca096.png" width="473"/><h2><strong> 3.提示框</strong></h2><p>在我们希望用户输入值的情况下，将使用提示框。 与其他警报框类似，用户必须单击“确定”或“取消”按钮才能继续操作。 提示框在单击“确定”时返回输入值，而在单击“取消”时返回空值。</p><p> JavaScript 代码： <span class="ezoic-adpicker-ad" id="ezoic-pub-ad-placeholder-124"> </span> <span class="ezoic-ad box-4 adtester-container adtester-container-124" data-ez-name="javabeginnerstutorial_com-box-4" style="display:block !important;float:none;margin-bottom:2px !important;margin-left:0px !important;margin-right:0px !important;margin-top:2px !important;min-height:110px;min-width:728px;text-align:center !important;"> <span class="ezoic-ad ezoic-adl" ezah="90" ezaw="728" id="div-gpt-ad-javabeginnerstutorial_com-box-4-0" style="position:relative;z-index:0;display:inline-block;min-height:90px;min-width:728px;"> </span> </span></p><pre><code class="language-javascript">window.prompt("Which Selenium Tool do you like the most?","e.g. Selenium IDE");</code></pre><p><img alt="Prompt Box" class="alignnone size-full wp-image-12508" data-lazy-src="https://javabeginnerstutorial.com/wp-content/uploads/2017/08/PromptBox-1.jpg" height="231" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20478%20231'%3E%3C/svg%3E" width="478"/></p><noscript><img alt="Prompt Box" class="alignnone size-full wp-image-12508" height="231" src="img/f245ded24a74c295f8cd11219e80647a.png" width="478"/><p>希望您现在对基于 Web 的弹出窗口的不同类型有清楚的了解。</p><h2><strong>处理弹出框：</strong></h2><p>Selenium WebDriver 尚未提供任何处理这些弹出框的方法。 你相信我刚才说的吗？</p><p>哈！ 我知道没有骗你的！ WebDriver 总是对我们所有问题都有答案。 <strong>警报接口</strong>随<strong> org.openqa.selenium.Alert </strong> <em>包</em>一起提供！</p><p>经常使用的一些最有用的方法是：</p><h3>1\. WebDriver switchTo（）</h3><p>这是用于从主窗口切换到弹出窗口或显示的警报的方法。</p><pre><code class="language-java">driver.switchTo().alert();</code></pre><h3>2.无效 accept（）</h3><p>此方法用于接受警报。 点击“确定”按钮。</p><pre><code class="language-java">driver.switchTo().alert().accept();</code></pre><h3>3.无效 dismiss（）</h3><p>此方法用于消除警报。 点击“取消”按钮。</p><pre><code class="language-java">driver.switchTo().alert().dismiss();</code></pre><h3>4.字符串 getText（）</h3><p>要使文本显示在弹出框中，请使用此方法，它将文本作为字符串返回。</p><pre><code class="language-java">driver.switchTo().alert().getText();</code></pre><h3>5\. void sendKeys（String textToSend）</h3><p>此方法用于在显示的弹出框中（通常是提示框）输入特定的 String。</p><pre><code class="language-java">driver.switchTo().alert().sendKeys(“sampleText”);</code></pre><h2><strong> 场景 </strong></h2><p>让我们来看一个实现这些方法的测试用例，以更深入地了解这些概念，</p><ol><li>打开 Firefox 浏览器</li><li>导航到<a href="https://chandanachaitanya.github.io/selenium-practice-site/">演示站点</a></li><li>使用 ID 找到“警告框”按钮</li><li>单击按钮以弹出警报框</li><li>获取警报弹出窗口的显示文本并将其打印到控制台</li><li>接受警报弹出窗口</li><li>使用 ID 找到“确认框”按钮</li><li>单击按钮以确认框弹出</li><li>将警报消息打印到控制台</li><li>关闭确认弹出窗口</li><li>使用 XPath 找到“提示框”按钮</li><li>单击按钮，弹出提示框</li><li>获取提示框消息并将其显示到控制台</li><li>接受 promt 弹出窗口</li><li>验证 Eclipse IDE 控制台输出屏幕和 JUnit 窗格是否成功</li></ol><p>此方案的 JUnit 代码是，</p><pre><code class="language-java">package com.blog.junitTests; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class PopupBoxes { // Declaring variables private WebDriver driver; private String baseUrl; @Before public void setUp() throws Exception { // Selenium version 3 beta releases require system property set up System.setProperty("webdriver.gecko.driver", "E:\\Softwares\\" + "Selenium\\geckodriver-v0.10.0-win64\\geckodriver.exe"); // Create a new instance for the class FirefoxDriver // that implements WebDriver interface driver = new FirefoxDriver(); // Implicit wait for 5 seconds driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); // Assign the URL to be invoked to a String variable baseUrl = "https://chandanachaitanya.github.io/selenium-practice-site/"; } @Test public void testPageTitle() throws Exception { // Open baseUrl in Firefox browser window driver.get(baseUrl); // Locate 'Alert Box' button using id WebElement alertBoxBtn = driver.findElement(By.id("alertBox")); // Click the button for alert box popup alertBoxBtn.click(); // Switch the control to 'Alert Box' popup Alert alertPopUp = driver.switchTo().alert(); // Print the alert message to console System.out.println("Alert Box message: " + alertPopUp.getText()); // Accept the alert popup alertPopUp.accept(); Thread.sleep(5000); // Locate 'Confirm Box' button using id WebElement confirmBoxBtn = driver.findElement(By.id("confirmBox")); // Click the button for confirm box popup confirmBoxBtn.click(); // Switch control to 'Confirm Box' popup Alert confirmPopUp = driver.switchTo().alert(); // Dismiss the popup confirmPopUp.dismiss(); System.out.println("Confirm box popup dismissed!"); Thread.sleep(5000); // Locate 'Prompt Box' button using XPath WebElement promptBoxBtn = driver.findElement(By.xpath("/html/body/form/div[4]/div[3]/button")); // Click the button for prompt box popup promptBoxBtn.click(); // Switch control to 'Prompt Box' popup Alert promptPopUp = driver.switchTo().alert(); // Display the prompt message to console System.out.println(promptPopUp.getText()); // Click 'OK' promptPopUp.accept(); } //End of @Test @After public void tearDown() throws Exception { // Close the Firefox browser driver.close(); } }</code></pre><p><em>代码说明：</em></p><ol><li>为了实例化一个弹出框，我们将必须导入“ <strong> import </strong> openqa.selenium.Alert package”。</li></ol><p>键入上述代码后，“ Alert”一词下方会出现一条弯曲的线。 悬停时，蚀将建议所有可能的快速修复。 单击建议导入“警报”包的第一个修补程序。</p><p><img alt="Import alert package" class="alignnone size-full wp-image-12510" data-lazy-src="https://javabeginnerstutorial.com/wp-content/uploads/2017/08/AlertImport-1.jpg" height="197" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20393%20197'%3E%3C/svg%3E" width="393"/></p><noscript><img alt="Import alert package" class="alignnone size-full wp-image-12510" height="197" src="img/8c7bdadd655552e5973edd3979ae7a74.png" width="393"/><pre><code class="language-java">// Switch the control to 'Alert Box' popup Alert alertPopUp = driver.switchTo().alert();</code></pre><p>该包指定了 Alert 界面，该界面用于处理基于 Web 的弹出框。</p><p>“ alertPopUp”是为引用显示的弹出窗口而创建的新实例变量。</p><p>2.要将控件从主窗口切换到弹出窗口，</p><pre><code class="language-java">driver.switchTo().alert();</code></pre><p>3.要使文本显示在弹出框中，请在引用所生成警报的实例变量上使用 getText（）方法。</p><pre><code class="language-java">// Print the alert message to console System.out.println("Alert Box message: " + alertPopUp.getText());</code></pre><p>4.要接受警报，请使用 accept（）方法。</p><pre><code class="language-java">// Accept the alert popup alertPopUp.accept();</code></pre><p>5.要关闭警报，请使用 dismiss（）方法。</p><pre><code class="language-java">// Dismiss the popup confirmPopUp.dismiss();</code></pre><p><em>执行结果：</em></p><p>在 JUnit 窗口中，绿色条显示测试用例已成功执行。 控制台窗口显示没有任何错误。 它还按预期显示所有打印的消息。</p><p><img alt="Alert Eclipse output" class="alignnone size-full wp-image-12507" data-lazy-src="https://javabeginnerstutorial.com/wp-content/uploads/2017/08/EclipseOutput-1.jpg" height="342" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20677%20342'%3E%3C/svg%3E" width="677"/></p><noscript><img alt="Alert Eclipse output" class="alignnone size-full wp-image-12507" height="342" src="img/5f21cb9c556c1522fd9bcdb900117ab4.png" width="677"/><p>是时候练习了，我很快会在另一篇文章中见。 祝你有美好的一天！</p><p> </p><p> </p><div class="sticky-nav" style="font-size: 15px;"><div class="sticky-nav-image"></div><div class="sticky-nav-holder"><div class="sticky-nav_item"><h6 class="heading-sm">下一篇文章</h6></div><h5 class="sticky-nav_heading " style="font-size: 15px;"><a href="https://javabeginnerstutorial.com/selenium/9y-webdriver-handling-multiple-windows/" title="9y. WebDriver – Handling multiple windows"> 9 岁。 WebDriver – 处理多个窗口</a></h5></div></div> </body> </html></noscript>