我需要将值发送到此弹出窗口。这是在同一个窗口打开。当我尝试使用正常的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(" ");
}
}
这是要在弹出窗口内发送控件..任何人都可以帮助我吗?
答案 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);
此代码适用于任意数量的弹出窗口