PythonとSeleniumを使用してEnter / Returnキーを入力しますか?


260

Seleniumで入力してEnterキーまたはReturnキーをすばやく入力する方法を探しています。残念ながら、テストしようとしているフォーム(自分のコードではなく、変更できない)には[送信]ボタンがありません。手動で作業する場合、私はちょうど入力しますENTERRETURNtypeクリックするボタンがないので、Selenium コマンドでそれを行う方法を知る必要があります。



ありがとう、それがまさに私が必要としていたことです!
croixhaug、2009年

@croixhaug:何を使っていますか?Selenium RCまたはWebDriver(Selenium 2)?言語はどうですか?Java?C#?または何?
Ripon Al Wasim 2013年

@ RiponAlWasim、2009年(質問されたとき)にはWebDriverはありませんでした。また、両方の回答がしばらくここにあります...
Alex Okrushko 2013年

@AlexOkrushko:はい、そうです
Ripon Al Wasim

回答:


296
import org.openqa.selenium.Keys

WebElement.sendKeys(Keys.RETURN);

import声明は、それは、例えば、Python用、多分異なっている他の言語のために、Javaのためのものです:from selenium.webdriver.common.keys import Keys


25
感動したと思います。from selenium.webdriver.common.keys import Keysstackoverflow.com/questions/5503489/...
ジェームズBroadhead

@HJames Broadhead:私はそれをチェックしました、実際のJAVA(2.17.0)のKeysクラスはまだですorg.openqa.selenium.Keys
Ralph

3
returnはenterとは異なりますが、Keys.ENTERはどのように違うのですか?(Keys.RETURNは、アクションを実行しているボットであることをより明確にするだけだと思いますか?)
NoBrainer '21

1
@NoBrainer:インポートされたファイルをざっと見て、あなたの質問に答えます: RETURN = '\ue006' ENTER = '\ue007'。しかし、なぜ?いくつかの遺物やOSの違い。
omikron、2014年

2
@NoBrainer:EnterとReturnは異なるキーです。このウィキペディアの記事の画像をご覧ください:en.wikipedia.org/wiki/Enter_key
Ralph

193

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

ルビー

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

1
Pythonの場合、入力文字列に「\ n」を追加するのが最も簡単な方法であることがわかりました。検索フィールドで機能しました。
YakovK

26

Selenium 2がリリースされたのでsend_keysselenium.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")

24

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'
  • ENTER =u'\ue007'

すべての実装はEnum Keys同じ方法で処理されます。

したがって、Seleniumを使用して、またはSeleniumを介して作業しているときは、これらは「No」 Functionalまたは「Operational違い」です。sendKeys(Keys.ENTER);WebElement.sendKeys(Keys.RETURN);


EnterキーとReturnキー

コンピューターのキーボードでは、Enter(またはReturnMac OSXでは)ほとんどの場合、コマンドライン、ウィンドウフォーム、またはダイアログボックスがデフォルトの機能を実行します。これは通常、「エントリ」を終了して目的のプロセスを開始するためのものであり、通常は[OK]ボタンを押す代わりに使用します。

Returnまた、しばしばと呼ばれEnter、彼らは通常、同一の機能を実行します。ただし、一部の特定のアプリケーション(主にページレイアウト)ではReturn、元のキャリッジリターンキーと同様に動作します。対照的に、Enterは一般に、汎用のPCキーボードではプレーンテキストで名前が付けられています。


参考文献


12

HTMLテストを記述する場合、Enterキーはとして使用できます${KEY_ENTER}

で使用できますsendKeys。ここに例を示します。

sendKeys | id=search | ${KEY_ENTER}

11

Pythonで

ステップ1。 from selenium.webdriver.common.keys import Keys

ステップ2。 driver.find_element_by_name("").send_keys(Keys.ENTER)

注:あなたは書く必要がありますKeys.ENTER


9

あなたはこれを行うだけです:

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

好奇心から、なぜ1行で書ける3行のコードを書くのが好きなのですか
Shekhar Swami


6

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

6

driver.findElement(By.id("Value")).sendKeys(Keys.RETURN); または driver.findElement(By.id("Value")).sendKeys(Keys.ENTER);


6
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')

ENTER = u '\ ue007'

セレンのドキュメント「特別なキー」を参照してください


この回答は機能しましたが、間違った番号を使用したため、誤って投票に落としました。
Martin Kersten、2016

5

私はちょうど私が私のキュウリのテストのためにこれを必要なことに注意するようにと、あなたが入力した/リターンキーを押してシミュレートしたい場合は、あなたが送信する必要があることが判明し:returnた値とない:enter値を(値は説明を参照こちら


これは、GWT入力テキストフィールドにも当てはまります。
joescii 2013

5

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

3

「セレンwebdriver(java)でキーボードからEnterキーを押す方法」を探している場合は、以下のコードが間違いなく役立ちます。

//assign key board object
Keyboard keyboard=((HasInputDevices) driver).getKeyboard();
//enter a key
keyboard.pressKey(Keys.ENTER);

1
提供するソリューションについてもう少し説明を追加して、回答を詳しく説明していただけませんか?
abarisone

3

submit()テキストを入力した要素オブジェクトを呼び出すことができます。

または、次のpythonスニペットに示すように、Enterキーを具体的に送信することもできます。

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

2

要素の検索にXPATHを使用してみると、次のコードが機能します。

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

要素にIDがある場合は、xpathの代わりにIDを使用することをお勧めします
Ripon Al Wasim 2015

2

キーを押すには次の方法があります-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);



2

セレンを使用してキーを入力するには、まず次のライブラリをインポートする必要があります。

"import org.openqa.selenium.Keys"

次に、キーを入力する場所にこのコードを追加します

"WebElement.sendKeys(Keys.RETURN);"

要件に応じて、RETURNをリストの任意のキーに置き換えることができます


1

WebDriverの場合、Actionインターフェースを使用しても実現できます-

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



1

テキストの途中でEnterキーを送信する必要がありました。だから私はキー関数を送信するために次のテキストを渡しました1\n2\n3

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

1

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

1

この特定の状況にある場合:

a)キーを押すだけで、クリックする特定のwebElementがない

b)Selenium 2(webDriver)を使用している

次に、解決策は次のとおりです。

    Actions builder = new Actions(webDriverInstance);
    builder.sendKeys(Keys.RETURN).perform();

1

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


0

javascript / nodeを使用しているすべての人にとって、これは私にとってうまくいきました:

driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.