it-swarm.com.de

So behandeln Sie das Popup in Selenium WebDriver mit Java

Ich möchte den Anmelde-Teil in rediff.com behandeln, aber der folgende Code funktioniert dafür nicht:

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");

Wenn myWindowHandle nicht die richtige Zeichenfolge ist, lassen Sie mich wissen, wie Sie den Namen des Popup-Fensters erhalten, da ich den Namen des Popup-Fensters nicht finden kann.

21
Niyati

Um zu einem Popup-Fenster zu wechseln, müssen Sie getWindowHandles() verwenden und durchlaufen.

In Ihrem Code verwenden Sie getWindowHandle(), wodurch Sie das übergeordnete Fenster selbst erhalten.

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
35
LINGS

Ich habe die Lösung für das oben genannte Programm gefunden, das das Ziel hatte, sich bei http://rediff.com anzumelden.

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();
    }  
}
11
Niyati

Sie können ein Popup-Fenster oder eine Alarmbox behandeln:

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

Sie können das Benachrichtigungsfeld auch ablehnen:

Alert alert = driver.switchTo().alert();
alert().dismiss();
4
ER.swatantra

Sie können den folgenden Code in Ihrem Code verwenden, wenn Sie ein Popup-Meldungsfeld für Webbrowser erhalten.

// 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();
4
Manasis Mishra

Machen Sie die Situation nicht komplex. Verwenden Sie ID, falls sie verfügbar sind.

driver.get("http://www.rediff.com");
WebElement sign = driver.findElement(By.linkText("Sign in"));
sign.click();
WebElement email_id= driver.findElement(By.id("c_uname"));
email_id.sendKeys("hi");
2
Hemanth

Wenn die Toastr-Nachricht auf dem Bildschirm von Firefox angezeigt wird. Das unten abgebildete Tag wurde in einem Programmfehler angezeigt. 

<div class="toast-message">Invalid Credentials, Please check Password</div>.

Ich habe damals den Screenshot gemacht ... und die folgenden Änderungen im Selenium Java Code vorgenommen.

String alertText = "";
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("toast-message")));
WebElement toast1 = driver.findElement(By.className("toast-message"));  
alertText = toast1.getText();
System.out.println( alertText);

Und meine Ausgabe von Toastr Popup wurde behoben.

0
Sandip
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();

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
0
user3150673