311

我正在寻找一种在 Selenium中键入Enter或键的快速方法。Return

不幸的是,我正在尝试测试的表单(不是我自己的代码,所以我无法修改)没有Submit按钮。手动使用它时,我只需键入Enteror Returntype由于没有可单击的按钮,如何使用 Selenium命令执行此操作?

4

30 回答 30

335
import org.openqa.selenium.Keys

WebElement.sendKeys(Keys.RETURN);

import声明适用于 Java。对于其他语言,可能会有所不同。例如,在 Python 中是from selenium.webdriver.common.keys import Keys

于 2011-08-18T10:19:43.410 回答
225

爪哇

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()

红宝石

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);
于 2014-02-28T09:37:06.747 回答
32

您可以使用 Keys.ENTERKeys.RETURN。以下是详细信息:

用法:

  • 爪哇

    • 使用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.ENTER两者Keys.RETURN都是 from org.openqa.selenium.Keys,它扩展java.lang.Enum<Keys>并实现了java.lang.CharSequence


枚举键

枚举键是非文本的可按下键的表示。这些存储在 Unicode PUA(私人使用区域)代码点 0xE000-0xF8FF 中。

关键代码:

他们的特别之处keys codes如下:

  • 返回=u'\ue006'
  • 输入=u'\ue007'

所有的执行都Enum Keys以相同的方式处理。

因此,在使用 Selenium或通过Selenium工作时,这些是No Functional或差异。OperationalsendKeys(Keys.ENTER);WebElement.sendKeys(Keys.RETURN);


输入键和返回键

在计算机键盘上,Enter(或ReturnMac OS X 上的)在大多数情况下会导致命令行、窗口窗体或对话框运行其默认功能。这通常是为了完成“输入”并开始所需的过程,通常是按下OK按钮的替代方法。

TheReturn通常也称为 the Enter,它们通常执行相同的功能;然而,在某些特定应用程序(主要是页面布局)中,Return其操作特别像它所源自的回车键。相比之下,Enter在通用 PC 键盘上,它通常以纯文本形式标明其名称。


参考

于 2017-12-15T10:10:31.463 回答
28

现在 Selenium 2 已经发布,发送 Enter 键会更容易一些,因为您可以使用类的send_keys方法来完成selenium.webdriver.remote.webelement.WebElement(此示例代码在 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")
于 2011-04-11T17:17:33.357 回答
16

在 Python 中

步骤1。 from selenium.webdriver.common.keys import Keys

第2步。 driver.find_element_by_name("").send_keys(Keys.ENTER)

注意:你必须写Keys.ENTER

于 2019-02-26T04:43:01.517 回答
12

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

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

sendKeys | id=search | ${KEY_ENTER}
于 2014-01-27T22:54:19.643 回答
9

你只需这样做:

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);
于 2012-10-11T08:32:17.543 回答
9
selenium.keyPress("css=input.tagit-input.ui-autocomplete-input", "13");
于 2009-10-27T18:26:36.153 回答
7

对于那些使用 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;
};
于 2013-05-17T11:15:24.040 回答
6
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')

#ENTER = u'\ue007'

请参阅 Selenium 的文档“特殊密钥”。

于 2016-01-18T07:52:23.817 回答
6

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

于 2015-10-01T07:58:36.857 回答
5

我只是想指出,我的 Cucumber 测试需要这个,并发现如果您想模拟按下回车键,您需要发送:return值而不是:enter值(请参阅此处描述的值)

于 2011-07-12T08:18:22.163 回答
5

对于使用 Java进行Selenium 远程控制:

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

对于带有 Java 的 Selenium WebDriver(又名 Selenium 2):

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

或者,

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

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

Actions action = new Actions(driver);
action.sendKeys(driver.findElement(By.id("elementID")), Keys.ENTER).build().perform();
于 2015-04-07T09:48:30.113 回答
4

您可以调用submit()输入文本的元素对象。

或者,您可以专门将Enter密钥发送给它,如以下 Python 片段所示:

from selenium.webdriver.common.keys import Keys
element.send_keys(Keys.ENTER) # 'element' is the WebElement object corresponding to the input field on the page
于 2019-02-28T09:43:52.040 回答
3

尝试使用 XPath 表达式来搜索元素,然后,以下代码可以工作:

driver.findElement(By.xpath(".//*[@id='txtFilterContentUnit']")).sendKeys(Keys.ENTER);
于 2013-11-27T10:42:06.847 回答
3

如果您正在寻找“如何在 Selenium WebDriver (Java) 中按键盘上的 Enter 键”,那么下面的代码肯定会对您有所帮助。

// Assign a keyboard object
Keyboard keyboard = ((HasInputDevices) driver).getKeyboard();

// Enter a key
keyboard.pressKey(Keys.ENTER);
于 2015-05-28T12:17:37.663 回答
3

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

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
于 2017-11-10T09:49:15.660 回答
3
object.sendKeys("your message", Keys.ENTER);

有用。

于 2017-09-04T11:03:15.473 回答
3

按键有以下几种方式 - 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);
于 2016-11-07T11:43:21.653 回答
3

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

import org.openqa.selenium.Keys

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

WebElement.sendKeys(Keys.RETURN);

您可以根据需要将 RETURN 替换为列表中的任何键。

于 2016-08-22T11:49:22.170 回答
2

It could be achieved using Action interface as well. In case of WebDriver -

WebElement username = driver.findElement(By.name("q"));
username.sendKeys(searchKey);
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
action.perform();
于 2013-10-01T06:32:10.867 回答
2

我不得不Enter在文本中间发送密钥。于是我通过下面的文字发送按键功能来实现1\n2\n3

1\N{U+E007}2\N{U+E007}3
于 2015-04-20T06:06:08.417 回答
2

你可以试试:

selenium.keyPress("id="", "\\13");
于 2014-01-22T09:51:09.640 回答
2

对于红宝石:

driver.find_element(:id, "XYZ").send_keys:return
于 2014-04-11T22:15:42.397 回答
2

对于使用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);
于 2015-04-07T10:26:43.687 回答
2

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

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

b) 您正在使用 Selenium 2 (WebDriver)

那么解决方案是:

    Actions builder = new Actions(webDriverInstance);
    builder.sendKeys(Keys.RETURN).perform();
于 2015-05-12T09:07:27.233 回答
2

Java/JavaScript:

你也可以这样做,非本机

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);
}
于 2016-10-29T20:39:06.260 回答
2
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
于 2017-01-06T16:42:19.330 回答
2

如果您只想按 Enter 键(python):

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

action = ActionChains(driver)
action.send_keys(Keys.ENTER)
action.perform()
于 2021-05-24T04:30:30.887 回答
1

对于每个使用JavaScript / Node.js的人来说,这对我有用:

driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
于 2019-01-14T22:38:42.823 回答