2

我有下面的代码,它将单击窗口中的按钮。点击按钮,当前窗口关闭,新窗口打开。一些文本将在新窗口的文本框中输入。

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 有关。硒:2.53.1 IE 11

4

5 回答 5

1

尝试专注于元素让说

element.Clear();
element.sendKeys("testingUserName");

并将此代码尝试捕获以查看是否有任何异常

于 2016-07-27T06:35:08.643 回答
1
Actions a = new Actions(driver);
a.SendKeys(element, "Your text to input").Build().Perform();

注意:在 IE11 中工作

于 2019-04-05T08:02:16.480 回答
1

一些事情 :

  • 验证您是否在其中找到了正确的元素,IE因为它有时XPathIE.

  • 尝试使用在其他浏览器中观察到的属性来确认问题元素的属性。

  • 尝试为浏览器使用IE驱动程序 32 位版本。IE11

  • 如果没有任何效果,那么使用 javascript 并没有什么坏处sendKeys。这不是一个坏习惯

于 2016-07-27T07:45:40.953 回答
0

试试这个这对我有用

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);
于 2016-07-27T11:46:33.773 回答
-1

我认为这一切都与时机有关。您应该考虑添加Thread.Sleep(3000);到您的代码中:

Thread.Sleep(3000);
element.sendKeys("Testingusername");

于 2019-04-05T08:47:55.587 回答