Selenium sendkeys没有输入文本

时间:2016-07-27 06:28:27

标签: java selenium selenium-webdriver selenium-iedriver

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

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

5 个答案:

答案 0 :(得分:1)

尝试专注于要说的元素

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

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

答案 1 :(得分:1)

少数事情:

  • 验证您是否找到了IE中的正确元素,因为XPath中有时IE行为有所不同。

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

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

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

答案 2 :(得分:1)

Actions a = new Actions(driver);
a.SendKeys(element, "Your text to input").Build().Perform();

注意:可在IE11中使用

答案 3 :(得分: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);

答案 4 :(得分:0)

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

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