Seleniumで入力してEnterキーまたはReturnキーをすばやく入力する方法を探しています。残念ながら、テストしようとしているフォーム(自分のコードではなく、変更できない)には[送信]ボタンがありません。手動で作業する場合、私はちょうど入力しますENTERかRETURN。type
クリックするボタンがないので、Selenium コマンドでそれを行う方法を知る必要があります。
Seleniumで入力してEnterキーまたはReturnキーをすばやく入力する方法を探しています。残念ながら、テストしようとしているフォーム(自分のコードではなく、変更できない)には[送信]ボタンがありません。手動で作業する場合、私はちょうど入力しますENTERかRETURN。type
クリックするボタンがないので、Selenium コマンドでそれを行う方法を知る必要があります。
回答:
import org.openqa.selenium.Keys
WebElement.sendKeys(Keys.RETURN);
import
声明は、それは、例えば、Python用、多分異なっている他の言語のために、Javaのためのものです: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'
。しかし、なぜ?いくつかの遺物やOSの違い。
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がリリースされたのでsend_keys
、selenium.webdriver.remote.webelement.WebElement
クラスのメソッドで実行できるため、Enterキーを送信するのが少し簡単になりました(このサンプルコードは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);
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
そして、Keys.RETURN
の両方からあるorg.openqa.selenium.Keys
延びる、java.lang.Enum<Keys>
及び器具java.lang.CharSequence
Enum Keysは、テキストではない押下可能なキーの表現です。これらは、Unicode PUA(私的使用領域)コードポイント0xE000-0xF8FFに格納されます。
keys codes
彼らのためのスペシャルは以下の通りです:
u'\ue006'
u'\ue007'
すべての実装はEnum Keys
同じ方法で処理されます。
したがって、Seleniumを使用して、またはSeleniumを介して作業しているときは、これらは「No」 Functional
または「Operational
違い」です。sendKeys(Keys.ENTER);
WebElement.sendKeys(Keys.RETURN);
コンピューターのキーボードでは、Enter(またはReturnMac OSXでは)ほとんどの場合、コマンドライン、ウィンドウフォーム、またはダイアログボックスがデフォルトの機能を実行します。これは通常、「エントリ」を終了して目的のプロセスを開始するためのものであり、通常は[OK]ボタンを押す代わりに使用します。
Returnまた、しばしばと呼ばれEnter、彼らは通常、同一の機能を実行します。ただし、一部の特定のアプリケーション(主にページレイアウト)ではReturn、元のキャリッジリターンキーと同様に動作します。対照的に、Enterは一般に、汎用のPCキーボードではプレーンテキストで名前が付けられています。
あなたはこれを行うだけです:
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;
};
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')
セレンのドキュメント「特別なキー」を参照してください
私はちょうど私が私のキュウリのテストのためにこれを必要なことに注意するようにと、あなたが入力した/リターンキーを押してシミュレートしたい場合は、あなたが送信する必要があることが判明し:return
た値とない:enter
値を(値は説明を参照こちら)
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();
「セレンwebdriver(java)でキーボードからEnterキーを押す方法」を探している場合は、以下のコードが間違いなく役立ちます。
//assign key board object
Keyboard keyboard=((HasInputDevices) driver).getKeyboard();
//enter a key
keyboard.pressKey(Keys.ENTER);
要素の検索に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);
ロケーターを検索したくない場合は、Robotクラスを使用できます。例:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_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);
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);
}