在Selenium中inputEnter / Return键
我正在寻找一种快速的方法来在Selenium中键入和input或返回键。 不幸的是我试图testing的forms(不是我自己的代码,所以我不能修改)没有提交button。 当手动使用它时,我只需inputENTER或RETURN 。 我需要知道如何使用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