我正在寻找一种在 Selenium 中键入 Enter 或 Return 键的快速方法。
不幸的是,我要测试的表单(不是我自己的代码,所以我无法修改)没有 Submit 按钮。手动使用它时,我只需键入 Enter 或 Return。由于没有可单击的按钮,我如何使用 Selenium type
命令执行此操作?
import org.openqa.selenium.Keys
WebElement.sendKeys(Keys.RETURN);
import
语句用于 Java。对于其他语言,可能会有所不同。例如,在 Python 中它是 from selenium.webdriver.common.keys import Keys
爪哇
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);
您可以使用 Keys.ENTER
或 Keys.RETURN
之一。以下是详细信息:
用法:
Java:使用 Keys.ENTER:导入 org.openqa.selenium.Keys; driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);使用 Keys.RETURN:导入 org.openqa.selenium.Keys; driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
使用 Keys.ENTER:导入 org.openqa.selenium.Keys; driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);
使用 Keys.RETURN:导入 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: 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<Keys>
并实现了 java.lang.CharSequence
。
枚举键
枚举键 是非文本的可按下键的表示。这些存储在 Unicode PUA (Private Use Area) 代码点 0xE000-0xF8FF 中。
关键代码:
它们的特殊 keys codes
如下:
返回 = u'\ue006'
ENTER = u'\ue007'
所有 Enum Keys
的实现都以相同的方式处理。
因此,在使用 sendKeys(Keys.ENTER);
或 或 Operational
时,这些是 No Functional
或 Operational
区别>WebElement.sendKeys(Keys.RETURN);
到 Selenium。
输入键和返回键
在计算机键盘上,大多数情况下,Enter(或 Mac OS X 上的 Return)会导致命令行、窗口窗体或对话框运行其默认功能。这通常是为了完成“输入”并开始所需的过程,通常是按 OK 按钮的替代方法。
Return 通常也称为 Enter,它们通常执行相同的功能;但是在某些特定的应用程序(主要是页面布局)中,Return 的操作特别像它所源自的回车键。相比之下,Enter 通常在通用 PC 键盘上以纯文本形式标明其名称。
参考
回车键
回车
现在 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")
Keys
的值(导入可以是 selenium.webdriver.common.keys import Keys
),在这种情况下为 Keys.RETURN
。
在 Python 中
第 1 步。 from selenium.webdriver.common.keys import Keys
第 2 步。 driver.find_element_by_name("").send_keys(Keys.ENTER)
注意:你必须写 Keys.ENTER
编写 HTML 测试时,ENTER 键可用作 ${KEY_ENTER}
。
您可以将它与 sendKeys
一起使用,这是一个示例:
sendKeys | id=search | ${KEY_ENTER}
selenium.keyPress("css=input.tagit-input.ui-autocomplete-input", "13");
你只需这样做:
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);
Keys
不需要“导入”吗?在 Python 中,它将是“from selenium.webdriver.common.keys import Keys
”。
对于那些使用 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;
};
driver.findElement(By.id("Value")).sendKeys(Keys.RETURN);
或 driver.findElement(By.id("Value")).sendKeys(Keys.ENTER);
对于使用 Java 的 Selenium Remote Control:
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();
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')
#ENTER = u'\ue007'
请参阅 Selenium 的文档“特殊密钥”。
我只是想指出,我的 Cucumber 测试需要这个,并发现如果您想模拟按 Enter/Return 键,则需要发送 :return
值而不是 {3 } 值(参见描述的值 here)
您可以在输入文本的元素对象上调用 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
如果您正在寻找“如何在 Selenium WebDriver (Java) 中按键盘上的 Enter 键”,那么下面的代码肯定会对您有所帮助。
// Assign a keyboard object
Keyboard keyboard = ((HasInputDevices) driver).getKeyboard();
// Enter a key
keyboard.pressKey(Keys.ENTER);
要使用 Selenium 输入密钥,首先需要导入以下库:
import org.openqa.selenium.Keys
然后将此代码添加到您要输入密钥的位置
WebElement.sendKeys(Keys.RETURN);
您可以根据需要将 RETURN 替换为列表中的任何键。
按键有以下几种方式 - 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);
object.sendKeys("your message", Keys.ENTER);
有用。
当您不想搜索任何定位器时,可以使用 Robot 类。例如,
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
Robot
类的文档吗?
尝试使用 XPath 表达式来搜索元素,然后,以下代码可以工作:
driver.findElement(By.xpath(".//*[@id='txtFilterContentUnit']")).sendKeys(Keys.ENTER);
Keys
不需要“导入”吗?在 Python 中,它将是“from selenium.webdriver.common.keys import Keys
”。
如果您只想按 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()
driver.find_element_by_xpath('//xpath').send_keys(Keys.ENTER)
,以防搜索完美地工作。
对于红宝石:
driver.find_element(:id, "XYZ").send_keys:return
对于使用 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);
我必须在文本中间发送 Enter 键。于是我通过下面的文字发送按键功能来实现1\n2\n3
:
1\N{U+E007}2\N{U+E007}3
send_keys()
(这是关于Python的)吗?
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);
}
也可以使用 Action 接口来实现。如果是 WebDriver -
WebElement username = driver.findElement(By.name("q"));
username.sendKeys(searchKey);
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
action.perform();
Keys
不需要“导入”吗?在 Python 中,它将是“from selenium.webdriver.common.keys import Keys
”。
你可以试试:
selenium.keyPress("id="", "\\13");
如果您处于这种特定情况:
a) 只想按键,但您没有特定的 webElement 可以点击
b) 您正在使用 Selenium 2 (WebDriver)
那么解决方案是:
Actions builder = new Actions(webDriverInstance);
builder.sendKeys(Keys.RETURN).perform();
对于每个使用 JavaScript / Node.js 的人来说,这对我有用:
driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
from selenium.webdriver.common.keys import Keys
(stackoverflow.com/questions/5503489/…)RETURN = '\ue006'
ENTER = '\ue007'
。但为什么?一些遗物或操作系统差异。from selenium.webdriver.common.keys import Keys
password_field.send_keys(Keys.ENTER)