使用Selenium在弹出窗口中按下Enter键

3
我正在使用Selenium来测试我的网站应用程序。
在这里,我想单击回车按钮以选择列表框中的值。我已经尝试过使用JavaScript、sendkeys和Robot方法,一切都在正常窗口下工作得很好,但是在弹出窗口显示时无法工作。
有人遇到这个问题吗?
请帮帮我。
先谢谢了。

请考虑分享您的代码块和相关的HTML。 - undetected Selenium
3个回答

3

您需要首先切换弹出窗口,然后才能执行操作。

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
尝试使用以下代码来切换窗口:

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);

没问题,无论何时打开它,你都可以做到,我很高兴它对你有用。 - iamsankalp89
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/153458/discussion-between-iamsankalp89-and-akalyvan。 - iamsankalp89

0

尝试下面的代码:

driver.switchTo().activeElement();

对我来说也正常工作...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接