使用selinium在弹出窗口中按Enter键

时间:2017-08-30 05:47:39

标签: javascript selenium selenium-webdriver drop-down-menu

我使用Selenium来测试我的网络应用程序。

在这里,我想点击“输入”按钮,在列表框中选择值。我已经尝试使用javascript,sendkeys和Robot最大化所有方法。在正常窗口中一切正常,但是当弹出窗口显示时间不起作用时。

有没有人遇到过这个问题?

请帮帮我。

感谢您提前。

3 个答案:

答案 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();

它对我来说也很好....