我正在寻找一种在Selenium中键入和Enter或Return键的快速方法。不幸的是,我要测试的表单(不是我自己的代码,所以我无法修改)没有“提交”按钮。手动操作时,只需输入ENTER或RETURN。我需要知道如何使用Selenium type
命令来执行此操作,因为没有单击的按钮。
我正在寻找一种在Selenium中键入和Enter或Return键的快速方法。不幸的是,我要测试的表单(不是我自己的代码,所以我无法修改)没有“提交”按钮。手动操作时,只需输入ENTER或RETURN。我需要知道如何使用Selenium type
命令来执行此操作,因为没有单击的按钮。
Answers:
import org.openqa.selenium.Keys
WebElement.sendKeys(Keys.RETURN);
该import
语句是针对Java的,对于其他语言,则可能有所不同,例如python:from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.keys import Keys
(stackoverflow.com/questions/5503489/...)
org.openqa.selenium.Keys
RETURN = '\ue006'
ENTER = '\ue007'
。但为什么?某些文物或操作系统差异。
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 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
。以下是一些详细信息:
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<Keys>
并实现java.lang.CharSequence
枚举键是不是文本的可按下键的表示。这些存储在Unicode PUA(专用区域)中)代码点0xE000-0xF8FF中。
keys codes
它们的特殊之处如下:
u'\ue006'
u'\ue007'
实施全部 Enum Keys
都以相同的方式处理。
因此,这些是没有 Functional
或Operational
区别与任何工作时sendKeys(Keys.ENTER);
或WebElement.sendKeys(Keys.RETURN);
通过硒。
在大多数情况下,在计算机键盘上Enter(或Return在Mac OSX上为)会导致命令行,窗口形式或对话框操作其默认功能。通常,这是为了完成“输入”并开始所需的过程,并且通常是按“确定”按钮的替代方法。
在Return通常也称为作为Enter他们通常执行相同的功能; 但是,在某些特定应用程序(主要是页面布局)中,其Return运行方式特别类似于其起源的回车键。相反,Enter通常在通用PC键盘上以纯文本标记其名称。
编写HTML测试时,ENTER键可用${KEY_ENTER}
。
您可以将其与一起使用sendKeys
,这是一个示例:
sendKeys | id=search | ${KEY_ENTER}
您只需执行以下操作:
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);
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')
请参阅硒文档“特殊键”
对于使用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();
尝试使用XPATH搜索元素,然后,下面的代码起作用:
driver.findElement(By.xpath(".//*[@id='txtFilterContentUnit']")).sendKeys(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);
object.sendKeys("your message",Keys.ENTER);
有用
当您不想搜索任何定位器时,可以使用Robot类:例如:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
对于使用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);
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);
}