我使用Selenium来测试我的网络应用程序。
在这里,我想点击“输入”按钮,在列表框中选择值。我已经尝试使用javascript,sendkeys和Robot最大化所有方法。在正常窗口中一切正常,但是当弹出窗口显示时间不起作用时。
有没有人遇到过这个问题?
请帮帮我。
感谢您提前。
答案 0 :(得分:2)
您需要先切换弹出窗口,然后才能执行操作
Alert alertOK = driver.switchTo().alert();
alertOK.accept();
如果弹出窗口不是确认框,则需要切换并执行点击操作
driver.switchTo().alert();
element.click();
或者如果它是应用程序弹出窗口,那么您可以尝试下面的代码
要切换到弹出窗口,您需要使用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
希望它会对你有所帮助:)。
答案 1 :(得分:1)
尝试使用此代码切换窗口:
WebDriver driver = new FirefoxDriver();
driver.get("http://demo.guru99.com/popup.php");
driver.manage().window().maximize();
driver.findElement(By.xpath("html/body/p/a")).click();
// return the parent window name as a String
String parentWindow=driver.getWindowHandle();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Pass a window handle to the other window
for(String childWindow: driver.getWindowHandles())
{
if(!childWindow.equals(parentWindow)){
System.out.println("child");
//switch to child window
driver.switchTo().window(childWindow);
//find an element and print text of it
WebElement textLabel=driver.findElement(By.xpath("html/body/div[1]/h2"));
System.out.println(" text: "+textLabel.getText());
driver.close();
}
}
System.out.println("Come to parent window");
/switch to Parent window
driver.switchTo().window(parentWindow);
答案 2 :(得分:0)
请尝试以下代码:
driver.switchTo().activeElement();
它对我来说也很好....