Selenium sendkeys没有输入文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium sendkeys没有输入文本相关的知识,希望对你有一定的参考价值。

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

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浏览器。
  • 如果没有任何作用,那么使用javascript 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");

以上是关于Selenium sendkeys没有输入文本的主要内容,如果未能解决你的问题,请参考以下文章

Selenium SendKey 与 jquery 输入掩码冲突

当sendKeys不工作时,如何在Selenium中上传文件

无法在 selenium 的 textarea 中输入文本

如何在没有文本框的情况下在 Selenium 中上传文件

Selenium:使用 xpath 在 div 中输入文本

Selenium IDE sendkeys() 没有目标