我有以下代码,它将点击窗口中的按钮。单击该按钮,将关闭当前窗口并打开新窗口。某些文本将在新窗口的文本框中输入。
WebElement element=null;
try {
driver.getWindowHandles();
for (String winHandle : driver.getWindowHandles()) {
driver.switchTo().window(winHandle);
try {
element = driver.findElement(By.xpath("//*[@id='username']"));
} catch (Exception e) {
continue;
}
if (element.isDisplayed()) {
windowFound = 1;
break;
}
}
}
element.sendKeys("Testingusername");
输入发送密钥的最后一行没有失败。但实际文本未输入文本框。
这适用于chrome。问题仅限于Internet Explorer。 Selenium:2.53.1 IE 11
试着把重点放在元素上
element.Clear();
element.sendKeys("testingUserName");
并把这个代码尝试捕获,看看你是否有任何异常
一些事情 :
IE
找到了正确的元素,因为它有时XPath
的行为是不同的IE
。IE
驱动程序32位版本的IE11
浏览器。sendKeys
没有任何害处。这不是一个坏习惯Actions a = new Actions(driver);
a.SendKeys(element, "Your text to input").Build().Perform();
注意:适用于IE11
尝试这个这对我有用
WebElement element=null;
try {
driver.getWindowHandles();
for (String winHandle : driver.getWindowHandles()) {
driver.switchTo().window(winHandle);
try {
element = driver.findElement(By.xpath("//*[@id='username']"));
} catch (Exception e) {
continue;
}
if (element.isDisplayed()) {
windowFound = 1;
break;
}
}
}
element.click();
String text = "your text that you want to enter";
StringSelection stringSelection = new StringSelection(text);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, stringSelection);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
我认为这完全取决于时机。您应该考虑在代码中添加Thread.Sleep(3000);
:
Thread.Sleep(3000);
element.sendKeys("Testingusername");