如何从同一个窗口中出现的弹出窗口中获取xpath?

时间:2014-04-09 04:26:12

标签: java selenium selenium-webdriver

我需要将值发送到此弹出窗口。这是在同一个窗口打开。当我尝试使用正常的driver.findelement时,无法找到xpath的错误消息 这是我的代码

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;


public class Homepage_login {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        FirefoxDriver driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);


        //driver.get("http://se.rdmsonline.net/login.aspx");

        driver.get("http://se.rdmsonline.net/");
        driver.findElement(By.xpath("//*[@id='rcmLang_Arrow']")).click();

        driver.findElement(By.xpath("//*[@id='rcmLang_DropDown']/div/ul/li[2]")).click();

        driver.findElement(By.xpath("//*[@id='txtUserName']")).sendKeys(" ");

        driver.findElement(By.xpath("//*[@id='txtPassword']")).sendKeys(" ");

        driver.findElement(By.xpath("//*[@id='btnLogin']")).click();

        driver.findElement(By.xpath("//*[@id='Div1']/div/a")).click();

        driver.findElement(By.xpath("//*[@id='txtUserName']")).sendKeys(" ");

        driver.findElement(By.xpath("//*[@id='txtPassword']")).sendKeys(" ");

        driver.findElement(By.xpath("//*[@id='btnLogin']")).click();

        driver.findElement(By.xpath("//*[@id='rptSec_ctl00_imb']")).click();

        driver.findElement(By.xpath("//*[@id='ctl00_Menu5']")).click();

        driver.findElement(By.xpath("//*[@id='ctl00_cpl1_lnkNewNotification']")).click();

        driver.findElement(By.xpath("//*[@id='ctl00_cplm_dtpDate_dateInput_text']")).sendKeys(" ");



    }

}

这是要在弹出窗口内发送控件..任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

首先你应该切换到弹出窗口,然后尝试找到元素 您可以使用以下代码段

String parentWindow = driver.getWindowHandle();
Set<String> windowHandles = driver.getWindowHandles();
Iterator<String> iterator = windowHandles.iterator();
while (iterator.hasNext()) {
   String handle = iterator.next();
   if (!handle.contains(parentWindow)) {
                    // Switch to popup 
                    driver.switchTo().window(handle);
                    // Add code to find element 
       }
}
// Switch back to original window
driver.switchTo().window(parentWindow);

此代码适用于任意数量的弹出窗口