在Selenium中键入回车键

我正在寻找一种快速的方法来键入输入返回键在硒。

不幸的是,我试图测试的表单(不是我自己的代码,所以我不能修改)没有提交按钮。当手动使用它时,我只输入输入返回。我怎么能做到这一点与硒type命令,因为没有按钮点击?

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

现在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")

我只是想指出,我需要这个我的黄瓜测试,并发现,如果你想模拟按下回车/返回键,你需要发送:return值和 :enter值(见值描述在这里)

import org.openqa.selenium.Keys


WebElement.sendKeys(Keys.RETURN);

import语句是用于Java的。对于其他语言来说,情况可能有所不同。例如,在Python中它是from selenium.webdriver.common.keys import Keys

你只需要这样做:

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

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

也可以使用Action界面来实现。在WebDriver的情况下-

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

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

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

你可以试试:

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

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

你可以在sendKeys中使用它,下面是一个例子:

sendKeys | id=search | ${KEY_ENTER}

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

Ruby:

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

对于Java中的硒遥控器:

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中按输入的另一种方法是使用行动类:

Actions action = new Actions(driver);
action.sendKeys(driver.findElement(By.id("elementID")), Keys.ENTER).build().perform();

对于使用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\n2\n3:

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

如果你是在这种情况下:

a)想只是按下键,但你没有一个特定的webElement点击

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

那么解决方案是:

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

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

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


// Enter a key
keyboard.pressKey(Keys.ENTER);

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

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

#ENTER = u'\ue007'

参考Selenium的文档“Special Keys”。

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

import org.openqa.selenium.Keys

然后在想要输入密钥的地方添加此代码

WebElement.sendKeys(Keys.RETURN);

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

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

有以下几种按键方式- 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);
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
object.sendKeys("your message", Keys.ENTER);

它的工作原理。

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

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

你可以使用< >强Keys.ENTER < / >强< >强Keys.RETURN < / >强中的任意一个。以下是细节:

用法:

  • < p > Java:

    • 使用Keys.ENTER < p >:

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

      import org.openqa.selenium.Keys;
      driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
      
  • < p > Python:

    • 使用Keys.ENTER < p >:

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

      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关键字

Enum关键字是非文本的可按键的表示。它们存储在Unicode PUA (私人用地)代码点0xE000-0xF8FF中。

关键代码:

它们的特殊keys codes如下:

  • __abc1 = __abc2
  • __abc1 = __abc2

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

因此,在使用sendKeys(Keys.ENTER);WebElement.sendKeys(Keys.RETURN);时,这是没有 FunctionalOperational的区别。


输入键和返回键

在计算机键盘上,输入(或Mac OS X上的返回)在大多数情况下会导致命令行、窗口形式或对话框操作其默认功能。这是典型的完成一个&;entry&;并开始所需的过程,通常是按好吧按钮的另一种选择。

返回通常也被称为输入,它们通常执行相同的功能;然而,在某些特定的应用程序(主要是页面布局)中,返回的操作特别像它起源的回车键。相比之下,输入通常在普通PC键盘上用纯文本标记其名称。


参考文献

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

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

在Python中

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

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

注意:必须写入Keys.ENTER

你可以在你输入文本的元素对象上调用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

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