如何使用Java处理Selenium WebDriver中的弹出窗口

Niy*_*ati 23 java popup popupwindow selenium-webdriver

我想在rediff.com中处理登录部分,但以下代码不适用于此:

driver.get("http://www.rediff.com/");
WebElement sign = driver.findElement(By.xpath("//html/body/div[3]/div[3]/span[4]/span/a"));
sign.click();
String myWindowHandle = driver.getWindowHandle();
driver.switchTo().window(myWindowHandle);
WebElement email_id= driver.findElement(By.xpath("//*[@id='signin_info']/a[1]"));
email_id.sendKeys("hi");
Run Code Online (Sandbox Code Playgroud)

如果myWindowHandle不是正确的字符串,那么让我知道如何获取弹出窗口名称,因为我找不到弹出窗口的名称.

LIN*_*NGS 38

要切换到弹出窗口,您需要使用getWindowHandles()并迭代它们.

在您使用的代码中getWindowHandle(),它将为您提供父窗口.

String parentWindowHandler = driver.getWindowHandle(); // Store your parent window
String subWindowHandler = null;

Set<String> handles = driver.getWindowHandles(); // get all window handles
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
    subWindowHandler = iterator.next();
}
driver.switchTo().window(subWindowHandler); // switch to popup window

// Now you are in the popup window, perform necessary actions here

driver.switchTo().window(parentWindowHandler);  // switch back to parent window
Run Code Online (Sandbox Code Playgroud)


Niy*_*ati 11

我找到了上述程序的解决方案,其目标是登录http://rediff.com

public class Handle_popupNAlert
{
    public static void main(String[] args ) throws InterruptedException
    {
        WebDriver driver= new FirefoxDriver(); 
        driver.get("http://www.rediff.com/");
        WebElement sign = driver.findElement(By.xpath("//html/body/div[3]/div[3]/span[4]/span/a"));
        sign.click();

        Set<String> windowId = driver.getWindowHandles();    // get  window id of current window
        Iterator<String> itererator = windowId.iterator();   

        String mainWinID = itererator.next();
        String  newAdwinID = itererator.next();

        driver.switchTo().window(newAdwinID);
        System.out.println(driver.getTitle());
        Thread.sleep(3000);
        driver.close();

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

        WebElement email_id= driver.findElement(By.xpath("//*[@id='c_uname']"));
        email_id.sendKeys("hi");
        Thread.sleep(5000);

        driver.close();
        driver.quit();
    }  
}
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以处理弹出窗口或警报框:

Alert alert = driver.switchTo().alert();
alert.accept();
Run Code Online (Sandbox Code Playgroud)

您还可以拒绝警告框:

Alert alert = driver.switchTo().alert();
alert().dismiss();
Run Code Online (Sandbox Code Playgroud)


小智 5

当您收到任何 Web 浏览器弹出警报消息框时,您可以在代码中使用以下代码。

// Accepts (Click on OK) Chrome Alert Browser for RESET button.

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



//Rejects (Click on Cancel) Chrome Browser Alert for RESET button.

Alert alertCancel = driver.switchTo().alert();
alertCancel.dismiss();
Run Code Online (Sandbox Code Playgroud)