首页 文章

在Selenium中输入Enter / Return键

提问于
浏览
197

我'm looking for a quick way to type and Enter or Return key in Selenium. Unfortunately the form I'm试图测试(不是我自己的代码,所以我可以't modify) doesn' t有一个提交按钮 . 当手动使用它时,我只需输入ENTER或RETURN . 我需要知道如何使用Selenium type 命令,因为它有没有按钮可点击 .

26 回答

  • 252

    你这样做:

    final private WebElement input = driver.findElement(By.id("myId"));
    input.clear();
    input.sendKeys(value); // the value we want to set to input
    input.sendKeys(Keys.RETURN);
    
  • 1
    import org.openqa.selenium.Keys
    
    WebElement.sendKeys(Keys.RETURN);
    

    import 语句适用于Java,对于其他语言,它可能是不同的,例如python: from selenium.webdriver.common.keys import Keys

  • 1

    JAVA

    driver.findElement(By.id("Value")).sendKeys(Keys.RETURN);
    

    要么,

    driver.findElement(By.id("Value")).sendKeys(Keys.ENTER);
    

    PYTHON

    from selenium.webdriver.common.keys import Keys
    driver.find_element_by_name("Value").send_keys(Keys.RETURN)
    

    要么,

    driver.find_element_by_name("Value").send_keys(Keys.ENTER)
    

    要么,

    element = driver.find_element_by_id("Value")
    element.send_keys("keysToSend")
    element.submit()
    

    RUBY

    element = @driver.find_element(:name, "value")
    element.send_keys "keysToSend"
    element.submit
    

    要么,

    element = @driver.find_element(:name, "value")
    element.send_keys "keysToSend"
    element.send_keys:return
    

    要么,

    @driver.action.send_keys(:enter).perform
    @driver.action.send_keys(:return).perform
    

    C#

    driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);
    

    要么,

    driver.FindElement(By.Id("Value")).SendKeys(Keys.Enter);
    
  • 141

    现在已经发布了Selenium 2,发送一个Enter键要容易一些,因为你可以使用 selenium.webdriver.remote.webelement.WebElement 类的 send_keys 方法(这个示例代码在Python中,但Java中存在相同的方法):

    >>> from selenium import webdriver
    >>> wd = webdriver.Firefox()
    >>> wd.get("http://localhost/example/page")
    >>> textbox = wd.find_element_by_css_selector("input")
    >>> textbox.send_keys("Hello World\n")
    
  • 26

    编写HTML测试时,ENTER键可用作 ${KEY_ENTER} .

    您可以将它与 sendKeys 一起使用,这是一个示例:

    sendKeys | id=search | ${KEY_ENTER}
    
  • 1

    您可以使用 Keys.ENTERKeys.RETURN 中的任何一个 . 以下是一些细节:

    用法:

    • Java:

    • 使用 Keys.ENTER

    import org.openqa.selenium.Keys;
    driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);
    
    • 使用 Keys.RETURN
    import org.openqa.selenium.Keys;
    driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
    
    • Python:

    • 使用 Keys.ENTER

    from selenium.webdriver.common.keys import Keys
    driver.find_element_by_id("element_id").send_keys(Keys.ENTER)
    
    • 使用 Keys.RETURN
    from selenium.webdriver.common.keys import Keys
    driver.find_element_by_id("element_id").send_keys(Keys.RETURN)
    

    Keys.ENTERKeys.RETURN 都来自 org.openqa.selenium.Keys ,它扩展 java.lang.Enum<Keys> 并实现 java.lang.CharSequence


    枚举键

    Enum Keys 是非文字的可按键的表示 . 它们存储在Unicode PUA(Private Use Area)代码点0xE000-0xF8FF中 .

    密码:

    它们的特殊 keys codes 如下:

    • RETURN = u'\ue006'

    • ENTER = u'\ue007'

    所有 Enum Keys 的实现都以相同的方式处理 .

    因此,在使用 sendKeys(Keys.ENTER);WebElement.sendKeys(Keys.RETURN);Selenium 时,这些区别是 No FunctionalOperational .


    输入密钥和返回密钥

    在计算机键盘上,在大多数情况下,Enter(或Mac OSX上的Return)会导致命令行,窗口窗体或对话框运行其默认功能 . 这通常是为了完成"entry"并开始所需的过程,通常是按下OK按钮的替代方法 .

    Return通常也称为Enter,它们通常执行相同的功能;但是在某些特定的应用程序(主要是页面布局)中,Return的运行方式与它所源自的 Carriage Return 键类似 . 相比之下,Enter通常在通用PC键盘上以纯文本标记其名称 .


    参考文献

  • 1
    selenium.keyPress("css=input.tagit-input.ui-autocomplete-input", "13");
    
  • 5

    对于那些使用WebDriverJS的人来说, Keys.RETURN 将被引用为

    webdriver.Key.RETURN
    

    作为参考的更完整的示例也可能有用:

    var pressEnterToSend = function () {
        var deferred = webdriver.promise.defer();
        webdriver.findElement(webdriver.By.id('id-of-input-element')).then(function (element) {
            element.sendKeys(webdriver.Key.RETURN);
            deferred.resolve();
        });
    
        return deferred.promise;
    };
    
  • 1

    driver.findElement(By.id("Value")).sendKeys(Keys.RETURN);driver.findElement(By.id("Value")).sendKeys(Keys.ENTER);

  • 1

    我只是想注意,我需要这个用于我的Cucumber测试,并发现如果你想模拟按下回车键/返回键,你需要发送 :return 值而不是 :enter 值(参见描述的值here

  • 6

    对于Selenium RC与Java:

    selenium.keyPress("elementID", "\13");
    

    对于带有java的Selenium WebDriver(a.k.a.Selenium2):

    driver.findElement(By.id("elementID")).sendKeys(Keys.ENTER);
    

    要么,

    driver.findElement(By.id("elementID")).sendKeys(Keys.RETURN);
    

    使用Actions类在WebDriver中按Enter键的另一种方法:

    Actions action = new Actions(driver); 
    action.sendKeys(driver.findElement(By.id("elementID")), Keys.ENTER).build().perform();
    
  • 4
    search = browser.find_element_by_xpath("//*[@type='text']")
    search.send_keys(u'\ue007')
    

    ENTER = u'\ ue007'

    参考selenium文档'特殊键'

  • 5

    如果你正在寻找“如何在selenium webdriver(java)中按键盘输入键”,那么下面的代码肯定会对你有所帮助 .

    //assign key board object
    Keyboard keyboard=((HasInputDevices) driver).getKeyboard();
    //enter a key
    keyboard.pressKey(Keys.ENTER);
    
  • 2

    有以下按键的方法 - C#:

    Driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);
    

    要么

    OpenQA.Selenium.Interactions.Actions action = new OpenQA.Selenium.Interactions.Actions(Driver);
    action.SendKeys(OpenQA.Selenium.Keys.Escape);
    

    要么

    IWebElement body = GlobalDriver.FindElement(By.TagName("body"));
    body.SendKeys(Keys.Escape);
    
  • 12

    在WebDriver的情况下,也可以使用Action接口实现 -

    WebElement username = driver.findElement(By.name("q"));
    username.sendKeys(searchKey);
    Actions action = new Actions(driver);
    action.sendKeys(Keys.RETURN);
    action.perform();
    
  • 1

    尝试使用XPATH搜索元素,然后,以下代码工作:

    driver.findElement(By.xpath(".//*[@id='txtFilterContentUnit']")).sendKeys(Keys.ENTER);
    
  • 1

    对于RUBY: -

    driver.find_element(:id,"XYZ").send_keys:return
    
  • 1

    你可以试试 :

    selenium.keyPress("id="","\\13");
    
  • 10

    我不得不在文本中间发送回车键 . 所以我通过以下文本发送键功能来实现 1\n2\n3

    1\N{U+E007}2\N{U+E007}3
    
  • 3

    对于使用xpath的Selenium WebDriver(如果键可见):

    driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.ENTER);
    

    要么,

    driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.RETURN);
    
  • 1

    如果您处于这种特定情况:

    a)想要按键,但没有特定的webElement可以点击

    b)您使用的是Selenium 2(webDriver)

    然后解决方案是:

    Actions builder = new Actions(webDriverInstance);
        builder.sendKeys(Keys.RETURN).perform();
    
  • 8

    JAVA/JavaScript:

    你也许可以这样做, non-natively

    public void triggerButtonOnEnterKeyInTextField(String textFieldId, String clickableButId)
    {
      ((JavascriptExecutor) driver).executeScript("
      elementId = arguments[0];
      buttonId = arguments[1];
      document.getElementById(elementId)
        .addEventListener("keyup", function(event) {
          event.preventDefault();
          if (event.keyCode == 13) {
              document.getElementById(buttonId).click();
          }
        });", textFieldId, clickableButId);
    }
    
  • 6
    object.sendKeys("your message",Keys.ENTER);
    

    有用

  • 7

    当您不想搜索任何定位器时,您可以使用Robot类:例如:

    Robot robot = new Robot();
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
    
  • 1
    Actions action = new Actions(driver);
    action.sendKeys(Keys.RETURN);
    
  • 1

    要使用selenium输入密钥首先需要导入以下库:

    "import org.openqa.selenium.Keys"
    

    然后将此代码添加到要输入密钥的位置

    "WebElement.sendKeys(Keys.RETURN);"
    

    您可以根据需要使用列表中的任何键替换RETURN

相关问题