在Selenium中输入Enter / Return键

时间:2009-10-27 06:32:37

标签: selenium automation automated-tests keypress enter

我正在寻找一种在Selenium中输入和输入或返回键的快捷方式。不幸的是,我试图测试的表单(不是我自己的代码,所以我无法修改)没有提交按钮。手动使用它时,我只需输入 ENTER RETURN 。我需要知道如何使用Selenium type命令,因为没有按钮可以点击。

30 个答案:

答案 0 :(得分:263)

import org.openqa.selenium.Keys

WebElement.sendKeys(Keys.RETURN);

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

答案 1 :(得分:157)

JAVA

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

OR,

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)

OR,

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

OR,

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

OR,

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

OR,

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

C#

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

OR,

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

答案 2 :(得分:26)

现在已经发布了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")

答案 3 :(得分:19)

您可以使用 Keys.ENTER Keys.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)
      
{strong> Keys.ENTER Keys.RETURN 均来自 org.openqa.selenium.Keys ,其中 { {1}} 并实施 java.lang.Enum<Keys>

Enum Keys

枚举键是不是文字的可按键的表示。它们存储在Unicode PUA(Private Use Area)代码点0xE000-0xF8FF中。

密码:

他们的特殊 java.lang.CharSequence 如下:

  • 返回 = keys codes
  • 输入 = u'\ue006'

所有 u'\ue007' 的实施都以相同的方式处理。

因此,在使用 {{1}时,这些 Enum Keys Functional 存在差异通过 Selenium Operational

输入密钥和返回密钥

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

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

参考

答案 4 :(得分:12)

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

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

sendKeys | id=search | ${KEY_ENTER}

答案 5 :(得分:9)

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

答案 6 :(得分:8)

你这样做:

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

答案 7 :(得分:6)

对于那些使用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;
};

答案 8 :(得分:6)

search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')

ENTER = u&#39; \ ue007&#39;

参考selenium文档&#39;特殊键&#39;

答案 9 :(得分:6)

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

答案 10 :(得分:5)

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

答案 11 :(得分:5)

对于Selenium RC with Java:

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

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

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

OR,

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

答案 12 :(得分:3)

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

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

答案 13 :(得分:2)

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

"import org.openqa.selenium.Keys"

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

"WebElement.sendKeys(Keys.RETURN);"

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

答案 14 :(得分:2)

按键有以下几种方法 - C#:

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

OR

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

OR

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

答案 15 :(得分:1)

Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);

答案 16 :(得分:1)

object.sendKeys("your message",Keys.ENTER);

它有效

答案 17 :(得分:1)

如果你处于这种特殊情况:

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

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

然后解决方案是:

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

答案 18 :(得分:1)

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

            Robot robot = new Robot();
            robot.keyPress(KeyEvent.VK_ENTER);
            robot.keyRelease(KeyEvent.VK_ENTER);

答案 19 :(得分:1)

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

或者,您可以按照以下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

答案 20 :(得分:1)

<强> 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);
}

答案 21 :(得分:1)

我必须在文本中间发送回车键。所以我通过以下文本发送密钥功能来实现1\n2\n3

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

答案 22 :(得分:1)

对于使用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);

答案 23 :(得分:1)

对于RUBY: -

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

答案 24 :(得分:1)

您可以尝试:

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

答案 25 :(得分:1)

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

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

答案 26 :(得分:1)

对于WebDriver -

,也可以使用Action接口实现
WebElement username = driver.findElement(By.name("q"));
username.sendKeys(searchKey);
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
action.perform();

答案 27 :(得分:0)

在Python中- 步骤1.从selenium.webdriver.common导入密钥 步骤2 driver.find_element_by_name(“”)。send_keys(keys.Keys.ENTER)

注意-您必须编写keys.keys.ENTER

答案 28 :(得分:0)

如果您只想按 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()

答案 29 :(得分:-1)

对于使用 javascript /节点的每个人来说,这对我来说都是有效的:

driver.findElement(By.xpath('xpath')).sendKeys('ENTER');