在Selenium中inputEnter / Return键

我正在寻找一种快速的方法来在Selenium中键入和input或返回键。 不幸的是我试图testing的forms(不是我自己的代码,所以我不能修改)没有提交button。 当手动使用它时,我只需inputENTERRETURN 。 我需要知道如何使用Selenium type命令,因为没有button可以点击。

 import org.openqa.selenium.Keys WebElement.sendKeys(Keys.RETURN); 

import语句是针对Java的,对于其他语言也许是不同的,例如python: from selenium.webdriver.common.keys import Keys

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

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

在编写HTMLtesting时,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); 
 selenium.keyPress("css=input.tagit-input.ui-autocomplete-input", "13"); 

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

我只是想注意到,我需要这个我的黄瓜testing,发现如果你想模拟按Enter / Return键,你需要发送:return值而不是 :enter值(见这里描述的值)

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

对于使用Java的Selenium RC:

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

对于使用java的Selenium WebDriver(又名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(); 
 search = browser.find_element_by_xpath("//*[@type='text']") search.send_keys(u'\ue007') 

ENTER = u'\ ue007'

请参阅selenium文档“特殊键”

如果你正在寻找“如何从键盘按下input密钥在seleniumwebdriver(Java)”,那么下面的代码将一定帮助你。

  //assign key board object Keyboard keyboard=((HasInputDevices) driver).getKeyboard(); //enter a key keyboard.pressKey(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); 

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

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

尝试使用XPATHsearch元素,然后下面的代码工作:

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

对于RUBY: –

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

你可以试试 :

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

对于使用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(); 

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

“import org.openqa.selenium.Keys”

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

“WebElement.sendKeys(Keys.RETURN);”

您可以根据您的要求使用列表中的任何键replaceRETURN

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 = new Actions(driver); action.sendKeys(Keys.RETURN);

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

有用

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

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

我不得不在文本中间发送input密钥。 所以我通过下面的文本发送键function来实现1\n2\n3

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