我正在寻找一种在Selenium中输入和输入或返回键的快捷方式。不幸的是,我试图测试的表单(不是我自己的代码,所以我无法修改)没有提交按钮。手动使用时,我只需输入ENTER或RETURN。我需要知道如何使用Selenium type
命令执行此操作,因为没有按钮可以单击。
import org.openqa.selenium.Keys
WebElement.sendKeys(Keys.RETURN);
import
语句适用于Java,对于其他语言,它可能是不同的,例如python:from selenium.webdriver.common.keys import Keys
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')
参考selenium文档'特殊键'
我只想注意,我需要这个用于我的Cucumber测试,并发现如果你想模拟按Enter / return键,你需要发送:return
值而不是:enter
值(参见描述的值here)
对于使用Java的Selenium RC:
selenium.keyPress("elementID", "\13");
对于Selenium WebDriver(a.k.a。Selenium2)和java:
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();
如果你正在寻找“如何在selenium webdriver(java)中按键盘输入键”,那么下面的代码肯定会对你有所帮助。
//assign key board object
Keyboard keyboard=((HasInputDevices) driver).getKeyboard();
//enter a key
keyboard.pressKey(Keys.ENTER);
在Python中
第1步.from selenium.webdriver.common import keys
第2步.driver.find_element_by_name("").send_keys(keys.Keys.ENTER)
注意:你必须写keys.Keys.ENTER
有以下按键的方法 - 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);
要使用selenium输入密钥首先需要导入以下库:
"import org.openqa.selenium.Keys"
然后将此代码添加到要输入密钥的位置
"WebElement.sendKeys(Keys.RETURN);"
您可以根据需要使用列表中的任何键替换RETURN
在WebDriver的情况下,也可以使用Action接口实现 -
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);
对于RUBY: -
driver.find_element(:id,"XYZ").send_keys:return
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
driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);
要么,
driver.FindElement(By.Id("Value")).SendKeys(Keys.Enter);
你可以试试 :
selenium.keyPress("id="","\\13");
我不得不在文本中间发送回车键。所以我通过以下文本发送键功能来实现1\n2\n3
1\N{U+E007}2\N{U+E007}3
对于使用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);
如果您处于这种特定情况:
a)想要按键,但没有特定的webElement点击
b)您使用的是Selenium 2(webDriver)
然后解决方案是:
Actions builder = new Actions(webDriverInstance);
builder.sendKeys(Keys.RETURN).perform();
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);
}
object.sendKeys("your message",Keys.ENTER);
有用
当您不想搜索任何定位器时,您可以使用Robot类:例如:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
您可以在输入文本的元素对象上调用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
对于每个使用javascript / node的人来说,这对我有用:
driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
现在已经发布了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")
你可以使用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);
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'
u'\ue007'
所有Enum Keys
的实现都以相同的方式处理。
因此,当使用Functional
或Operational
通过Selenium时,这些是没有sendKeys(Keys.ENTER);
或WebElement.sendKeys(Keys.RETURN);
的差异。
在计算机键盘上,在大多数情况下,Enter(或Mac OSX上的Return)会导致命令行,窗口窗体或对话框操作其默认功能。这通常是为了完成“输入”并开始所需的过程,并且通常是按下OK按钮的替代方法。
Return通常也称为Enter,它们通常执行相同的功能;但是在某些特定的应用程序(主要是页面布局)中,Return的运行方式与它所源自的Carriage Return键的运行方式类似。相比之下,Enter通常在通用PC键盘上以明文标记其名称。
编写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);
对于那些使用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);