java selenium回车键_使用Python和Selenium输入Enter / Return键?

这篇博客解答了如何在Selenium中模拟用户输入Enter或Return键的问题。对于Java,可以使用`WebElement.sendKeys(Keys.RETURN)`或`WebElement.sendKeys(Keys.ENTER)`;在Python中,可以使用`Keys.RETURN`或`Keys.ENTER`。不同编程语言中,方法略有差异,但基本思路是相同的,即通过Selenium的sendKeys方法发送键盘事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Python和Selenium输入Enter / Return键?

260

我正在寻找一种在Selenium中键入和Enter或Return键的快速方法。不幸的是,我要测试的表单(不是我自己的代码,所以我无法修改)没有“提交”按钮。手动操作时,只需输入ENTER或RETURN。我需要知道如何使用Selenium type命令来执行此操作,因为没有单击的按钮。

谢谢,这正是我所需要的!

@croixhaug:你在用什么?Selenium RC还是WebDriver(Selenium 2)?语言呢?Java的?C#?或者是什么?

@RiponAlWasim,在2009年(提出问题时)没有WebDriver。同样,这两个答案都已经存在了一段时间……

@AlexOkrushko:是的,您是对的

Answers:

296

import org.openqa.selenium.Keys

WebElement.sendKeys(Keys.RETURN);

该import语句是针对Java的,对于其他语言,则可能有所不同,例如python:from selenium.webdriver.common.keys import Keys

25

我相信它已经感动了。from selenium.webdriver.common.keys import Keys(stackoverflow.com/questions/5503489/...)

@HJames Broadhead:我已经检查过了,实际的JAVA(2.17.0)的Keys类仍然是org.openqa.selenium.Keys

3

我知道return与enter不同,但是Keys.ENTER有何不同?(我认为Keys.RETURN只会使其很明显是在执行该操作的机器人?)

1

@NoBrainer:快速查看导入的文件将回答您的问题: RETURN = '\ue006' ENTER = '\ue007'。但为什么?某些文物或操作系统差异。

2

@NoBrainer:Enter和Return是不同的键,请查看此Wikipedia文章的图片:en.wikipedia.org/wiki/Enter_key

192

爪哇

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

要么,

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

蟒蛇

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

1

对于Python,我发现在输入字符串后附加“ \ n”是最直接的方法。它在搜索领域中起作用。

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

24

您可以使用 Keys.ENTER或Keys.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);

蟒蛇:

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

枚举键

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

关键代码:

keys codes它们的特殊之处如下:

返回 =u'\ue006'

ENTER =u'\ue007'

实施全部 Enum Keys都以相同的方式处理。

因此,这些是没有 Functional或Operational区别与任何工作时sendKeys(Keys.ENTER);或WebElement.sendKeys(Keys.RETURN);通过硒。

输入键和返回键

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

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

参考资料

12

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

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

sendKeys | id=search | ${KEY_ENTER}

11

在Python中

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

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

注意:你必须写Keys.ENTER

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

只是出于好奇,您为什么喜欢编写3行代码,就可以单行编写

9

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

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;

};

6

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

6

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

search.send_keys(u'\ue007')

ENTER = u'\ ue007'

请参阅硒文档“特殊键”

这个答案有效,但是由于我使用了错误的号码,因此无意中将其否决了。

5

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

对于GWT输入文本字段也是如此。

5

对于使用Java的Selenium RC:

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

对于使用Java的Selenium WebDriver(aka 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();

3

如果您正在寻找“如何在Selenium Webdriver(java)中通过键盘按Enter键”,那么下面的代码一定会对您有所帮助。

//assign key board object

Keyboard keyboard=((HasInputDevices) driver).getKeyboard();

//enter a key

keyboard.pressKey(Keys.ENTER);

1

您能否详细说明您的答案,并提供有关您提供的解决方案的更多说明?

3

您可以调用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

2

尝试使用XPATH搜索元素,然后,下面的代码起作用:

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

如果元素具有ID,则最好使用ID而不是xpath

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

2

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

有用

2

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

Robot robot = new Robot();

robot.keyPress(KeyEvent.VK_ENTER);

robot.keyRelease(KeyEvent.VK_ENTER);

2

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

"import org.openqa.selenium.Keys"

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

"WebElement.sendKeys(Keys.RETURN);"

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

1

如果是WebDriver,也可以使用Action接口来实现-

WebElement username = driver.findElement(By.name("q"));

username.sendKeys(searchKey);

Actions action = new Actions(driver);

action.sendKeys(Keys.RETURN);

action.perform();

1

对于RUBY:-

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

1

你可以试试 :

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

1

我必须在文本中间发送Enter键。所以我通过下面的文本发送按键功能来实现1\n2\n3

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

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

1

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

a)只想按一下键,但没有要单击的特定webElement

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

那么解决方案是:

Actions builder = new Actions(webDriverInstance);

builder.sendKeys(Keys.RETURN).perform();

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

}

1

Actions action = new Actions(driver);

action.sendKeys(Keys.RETURN);

0

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值