java - 在 Selenium Webdriver 警报上单击“确定”

标签 java selenium selenium-webdriver automation alerts

好吧,我知道关于 webdriver 中的警报这个问题还有很多其他答案,我已经浏览过它们,但我认为我的情况有点不同。当我单击“提交”按钮时,我已经切换到 3 个框架,然后收到警报,因此我尝试切换回默认内容,然后使用 try catch 和alert.accept 单击警报,但它仍然没有单击警报。代码如下。预先感谢您的帮助:)

public class BookAHoliday {

    public FirstPage completeHolidayFormAndSubmit(String firstDate, String lastDate) {

        sleepsAreBad();
        driver.switchTo().frame("ContainerFrame");
        driver.switchTo().frame("iframeCommunityContainer");
        driver.switchTo().frame("FORMCONTAINER");
        fluentWait(By.id("StartDate_txtInput"));
        firstDayOfLeaveInput.sendKeys(firstDate);
        sleepsAreBad();
        lastDayofLeaveInput.sendKeys(lastDate);

        try {
            submitButton.click();
        } catch (UnhandledAlertException f) {
            try {
                sleepsAreBad();
                driver.switchTo().defaultContent();
                Alert alert = driver.switchTo().alert();
                String alertText = alert.getText();
                System.out.println("Alert data: " + alertText);
                alert.accept();
            } catch (NoAlertPresentException e) {
                e.printStackTrace();
            }
        }
        sleepsAreBad();

        return PageFactory.initElements(driver, FirstPage.class);
    }


    private void sleepsAreBad() {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }


public class BaseTest {


    public static WebDriver driver;
    static String driverPath = "C:\\";

    @BeforeClass
    public static void setUp() {
        System.out.println("****************");
        System.out.println("launching Browser");
        System.out.println("****************");
        // Browser selection

        //Firefox

        DesiredCapabilities dc = new DesiredCapabilities();
        dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
        driver = new FirefoxDriver(dc);

driver.get(URL);

 @AfterClass()
    public static void tearDown() {
        if (driver != null) {
            System.out.println("Closing browser");
            driver.quit();
        }

    }


public class Bookings extends BaseTest{

    @Test(description = "Holiday booking")
    public void CD01() {

        FirstPage firstPage = PageFactory.initElements(driver, FirstPage.class);
        firstPage


                 .logIn("username", "password")
                .clickHolidayLink()
                .completeHolidayFormAndSubmit("12/05/2016", "15/05/2016");



    }

alert box 这是警报框

最佳答案

当您在 catch 中遇到 UnhandledAlertException 时,请尝试此操作

WebDriverWait wait = new WebDriverWait(driver, 3000);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = webDriver.switchTo().alert();
alert.accept();

也许它会对你有所帮助...:)

关于java - 在 Selenium Webdriver 警报上单击“确定”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37588384/

相关文章:

java - 到处使用 `final` 修饰符的开源 Java 项目

java - 使用 Spring MVC 和 Html 上传图片

java - 如何使用 text() 函数获取元素的 xpath,其中文本具有撇号

java - android :onClick and View. OnClickListener 之间的关系

java - 如何为 Java Spring Boot 和 MySql 设置 Docker 容器

python - 尝试提取 URL 时使用 Urllibopener 时引发 HTTP 错误

java - Selenium 无法通过 xpath 找到元素

ruby - 使用 Selenium Ruby Webdriver 比较两个图像

java - 如何使用 Selenium Webdriver 识别特定文本的语言

java - 无法从 Booking.com 的搜索结果中获取价格