it-swarm.com.de

Eingabe von Enter / Return-Taste in Selen

Ich suche nach einer schnellen Möglichkeit, in Selenium die Eingabetaste oder die Eingabetaste einzugeben. Leider enthält das Formular, das ich testen möchte (nicht meinen eigenen Code, damit ich ihn nicht ändern kann), keine Schaltfläche zum Senden. Wenn ich manuell damit arbeite, tippe ich einfach ENTER oder RETURN. Ich muss wissen, wie man das mit dem Befehl Selenium type macht, da es keine Schaltfläche zum Klicken gibt.

217
croixhaug
import org.openqa.Selenium.Keys

WebElement.sendKeys(Keys.RETURN);

Die import-Anweisung ist für Java, für andere Sprachen ist es möglicherweise eine andere, zum Beispiel Python: from Selenium.webdriver.common.keys import Keys

258
Ralph

Java

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

ODER,

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)

ODER,

driver.find_element_by_name("Value").send_keys(Keys.ENTER)

ODER,

element = driver.find_element_by_id("Value")
element.send_keys("keysToSend")
element.submit()

Rubin

element = @driver.find_element(:name, "value")
element.send_keys "keysToSend"
element.submit

ODER,

element = @driver.find_element(:name, "value")
element.send_keys "keysToSend"
element.send_keys:return

ODER,

@driver.action.send_keys(:enter).perform
@driver.action.send_keys(:return).perform

C #

driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);

ODER,

driver.FindElement(By.Id("Value")).SendKeys(Keys.Enter);
152
Prashanth Sams

Jetzt, da Selenium 2 veröffentlicht wurde, ist es etwas einfacher, einen Enter-Schlüssel zu senden, da Sie dies mit der send_keys-Methode der Selenium.webdriver.remote.webelement.WebElement-Klasse tun können (dieser Beispielcode befindet sich in Python, die gleiche Methode existiert jedoch in 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")
26
Eli Courtwright

Sie können entweder Keys.ENTER oder Keys.RETURN verwenden. Hier sind einige Details:

Verwendungszweck :

  • Java :

    • Verwenden von Keys.ENTER:

      import org.openqa.Selenium.Keys;
      driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);
      
    • Verwenden von Keys.RETURN

      import org.openqa.Selenium.Keys;
      driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
      
  • Python:

    • Verwenden von Keys.ENTER:

      from Selenium.webdriver.common.keys import Keys
      driver.find_element_by_id("element_id").send_keys(Keys.ENTER)
      
    • Verwenden von Keys.RETURN

      from Selenium.webdriver.common.keys import Keys
      driver.find_element_by_id("element_id").send_keys(Keys.RETURN)
      

Keys.ENTER und Keys.RETURN sind beide von org.openqa.Selenium.Keys, was Java.lang.Enum<Keys> erweitert und Java.lang.CharSequence implementiert


Enum Keys

Enum Keys ist die Darstellung von drückbaren Tasten, die kein Text sind. Diese werden in den Unicode PUA ( Private Use Area ) Codepunkten 0xE000-0xF8FF gespeichert.

Schlüsselcodes:

Die speziellen keys codes für sie sind wie folgt:

  • RETURN = u'\ue006'
  • ENTER = u'\ue007'

Die Implementierung aller Enum Keys erfolgt auf die gleiche Weise.

Daher ist dies NeinFunctional oder Operational Unterschied beim Arbeiten mit sendKeys(Keys.ENTER); oder WebElement.sendKeys(Keys.RETURN); durch Selen.


Enter Key und Return Key

Auf Computertastaturen wird die Enter (oder der Return unter Mac OS X) führt in den meisten Fällen dazu, dass eine Befehlszeile, ein Fenster oder ein Dialogfeld ihre Standardfunktion ausführt. Dies dient normalerweise zum Beenden einer "Eingabe" und zum Starten des gewünschten Vorgangs und ist in der Regel eine Alternative zum Drücken einer OK-Taste.

Das Return wird oft auch als das bezeichnet Enter und sie führen normalerweise identische Funktionen durch; jedoch in einigen bestimmten Anwendungen (hauptsächlich Seitenlayout) Return Funktioniert speziell wie die Taste Wagenrücklauf, von der es stammt. Im Gegensatz dazu ist die Enter wird üblicherweise mit seinem Namen in Klartext auf generischen PC-Tastaturen bezeichnet.


Verweise

21
DebanjanB

Beim Schreiben von HTML-Tests steht die ENTER-Taste als ${KEY_ENTER} zur Verfügung.

Sie können es mit sendKeys verwenden, hier ein Beispiel:

sendKeys | id=search | ${KEY_ENTER}
12
Maurice Svay
Selenium.keyPress("css=input.tagit-input.ui-autocomplete-input", "13");
9
Nirmal Patel

Sie tun einfach das:

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

Für diejenigen, die WebDriverJS verwenden, wird Keys.RETURN als referenziert 

webdriver.Key.RETURN

Ein vollständigeres Beispiel als Referenz kann auch hilfreich sein:

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
Greg Stewart

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

6
Mosam Mehta

Ich möchte nur anmerken, dass ich dies für meine Gurkentests benötigte und herausfand, dass Sie, wenn Sie die Eingabetaste drücken, den Wert :return und not den Wert :enter senden müssen (siehe die beschriebenen Werte Hier )

5

Für Selenium RC mit Java:

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

Für Selenium WebDriver (a.k.a. Selenium2) mit Java:

driver.findElement(By.id("elementID")).sendKeys(Keys.ENTER);

ODER,

driver.findElement(By.id("elementID")).sendKeys(Keys.RETURN);

Eine andere Möglichkeit, die Eingabetaste in WebDriver mithilfe der Actions-Klasse zu drücken:

Actions action = new Actions(driver); 
action.sendKeys(driver.findElement(By.id("elementID")), Keys.ENTER).build().perform();
5
Ripon Al Wasim
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')

ENTER = u '\ ue007'

siehe Selen-Dokumentation unter "Spezialschlüssel"

4
Ashish gupta

wenn Sie nach "Eingabe der Eingabetaste über die Tastatur in Selenium Webdriver (Java)" suchen, hilft Ihnen der folgende Code auf jeden Fall.

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

Um Schlüssel mit Selenium einzugeben, müssen Sie zunächst folgende Bibliothek importieren: 

"import org.openqa.Selenium.Keys"

fügen Sie diesen Code dann dort hinzu, wo Sie den Schlüssel eingeben möchten

"WebElement.sendKeys(Keys.RETURN);"

Sie können RETURN durch beliebige Schlüssel aus der Liste entsprechend Ihrer Anforderungen ersetzen

2
RNS

Es gibt folgende Möglichkeiten, Tasten zu drücken - C #:

Driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);

OR

OpenQA.Selenium.Interactions.Actions action = new OpenQA.Selenium.Interactions.Actions(Driver);
action.SendKeys(OpenQA.Selenium.Keys.Escape);

OR

IWebElement body = GlobalDriver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Escape);
2
Mohsin Awan

Ich musste die Eingabetaste in der Mitte eines Textes senden. Also habe ich den folgenden Text übergeben, um die Schlüsselfunktion zu senden, um 1\n2\n3 zu erreichen.

1\N{U+E007}2\N{U+E007}3
1
Anand
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
1
Jack 666

Versuchen Sie, XPATH für die Suche des Elements zu verwenden, und der folgende Code funktioniert:

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

Kann auch über die Action-Schnittstelle im Falle von WebDriver erreicht werden

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

Für Rubin: - 

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

Wenn Sie sich in dieser spezifischen Situation befinden:

a) Sie möchten NUR die Taste drücken, ohne ein bestimmtes webElement anzuklicken

b) Sie verwenden Selenium 2 (webDriver)

Dann ist die Lösung:

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

Java/JavaScript:

Sie könnten es wahrscheinlich auch so machen, non-native:

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

Wenn Sie keinen Locator suchen möchten, können Sie die Robot-Klasse verwenden: zB:

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

Du kannst es versuchen :

Selenium.keyPress("id="","\\13");
1
dexter

Für Selenium WebDriver mit xpath (Wenn der Schlüssel sichtbar ist): 

driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.ENTER);

oder,

driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.RETURN);
1
object.sendKeys("your message",Keys.ENTER);

es klappt

1
Sanju Abel

Sie können submit() für das Elementobjekt aufrufen, in das Sie Ihren Text eingegeben haben.

Alternativ können Sie auch die Eingabetaste spezifisch senden, wie in diesem Python-Snippet gezeigt:

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
0
suicidalteddy

In Python -- Schritt 1. Importieren Sie die Schlüssel aus dem Selenium.webdriver.common Schritt 2 driver.find_element_by_name (""). Send_keys (keys.Keys.ENTER)

Hinweis - Sie müssen keys.keys.ENTER schreiben

0
jayesh

Für alle, die javascript/node verwenden, hat dies bei mir funktioniert:

driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
0
Caleb Goodman