我正在使用Selenium来测试我的网站应用程序。
在这里,我想单击回车按钮以选择列表框中的值。我已经尝试过使用JavaScript、sendkeys和Robot方法,一切都在正常窗口下工作得很好,但是在弹出窗口显示时无法工作。
有人遇到这个问题吗?
请帮帮我。
先谢谢了。
在这里,我想单击回车按钮以选择列表框中的值。我已经尝试过使用JavaScript、sendkeys和Robot方法,一切都在正常窗口下工作得很好,但是在弹出窗口显示时无法工作。
有人遇到这个问题吗?
请帮帮我。
先谢谢了。
您需要首先切换弹出窗口,然后才能执行操作。
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
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);
尝试下面的代码:
driver.switchTo().activeElement();
对我来说也正常工作...