web-dev-qa-db-fra.com

Taper la touche Entrée / Retour en sélénium

Je cherche un moyen rapide de taper et d'entrer ou de retourner la clé dans Selenium. Malheureusement, le formulaire que j'essaie de tester (ce n'est pas mon propre code, je ne peux pas le modifier) ​​ne comporte pas de bouton Envoyer. Lorsque je travaille avec manuellement, je tape simplement ENTER ou RETURN. J'ai besoin de savoir comment faire cela avec la commande Selenium type car il n'y a pas de bouton sur lequel cliquer.

217
croixhaug
import org.openqa.Selenium.Keys

WebElement.sendKeys(Keys.RETURN);

L'instruction import concerne Java, elle est peut-être différente pour d'autres langues, par exemple python: from Selenium.webdriver.common.keys import Keys

258
Ralph

Java

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

OU,

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)

OU,

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

OU,

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

Rubis

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

OU,

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

OU,

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

C #

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

OU,

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

Maintenant que Selenium 2 est disponible, il est un peu plus facile d’envoyer une touche Entrée car vous pouvez le faire avec la méthode send_keys de la classe Selenium.webdriver.remote.webelement.WebElement (cet exemple de code est en Python mais la même méthode existe en 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

Vous pouvez utiliser Keys.ENTER ou Keys.RETURN. Voici quelques détails:

Utilisation:

  • Java :

    • Utiliser Keys.ENTER:

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

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

    • Utiliser Keys.ENTER:

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

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

Keys.ENTER et Keys.RETURN proviennent tous deux de org.openqa.Selenium.Keys, ce qui étend Java.lang.Enum<Keys> et implémente Java.lang.CharSequence


Enum Keys

Enum Keys est la représentation des touches pouvant être pressées qui ne sont pas du texte. Ceux-ci sont stockés dans les points de code Unicode PUA ( Private Use Area ), 0xE000-0xF8FF.

Codes clés:

Le spécial keys codes pour eux est le suivant:

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

L'implémentation de tous les Enum Keys est traitée de la même manière.

C’est pourquoi il s’agit de Non Functional ou Operational différence lorsque vous travaillez avec sendKeys(Keys.ENTER); ou WebElement.sendKeys(Keys.RETURN); à Sélénium .


Entrer la clé et retourner la clé

Sur les claviers d’ordinateur, le Enter (ou la Return sous Mac OSX), dans la plupart des cas, une ligne de commande, un formulaire de fenêtre ou une boîte de dialogue remplit sa fonction par défaut. Il s’agit généralement de terminer une "entrée" et de commencer le processus souhaité. C’est généralement une alternative à la pression du bouton OK.

Le Return est souvent aussi appelé le Enter et ils remplissent généralement des fonctions identiques; cependant dans certaines applications particulières (principalement la mise en page) Return fonctionne spécifiquement comme la clé retour de chariot dont elle provient. En revanche, le Enter est généralement étiqueté avec son nom en texte brut sur les claviers PC génériques.


Références

21
DebanjanB

Lors de la rédaction de tests HTML, la touche Entrée est disponible sous la forme ${KEY_ENTER}.

Vous pouvez l'utiliser avec sendKeys, en voici un exemple:

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

Vous faites juste ceci:

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

Pour ceux qui utilisent WebDriverJS, Keys.RETURN serait référencé par 

webdriver.Key.RETURN

Un exemple plus complet en tant que référence pourrait également être utile:

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); ou driver.findElement(By.id("Value")).sendKeys(Keys.ENTER);

6
Mosam Mehta

J'aime juste noter que j'en avais besoin pour mes tests de concombre et que si vous aimez simuler en appuyant sur la touche Entrée/Retour, vous devez envoyer la valeur :return et non la valeur :enter (voir les valeurs ici )

5
Pascal Lindelauf

Pour Selenium RC avec Java:

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

Pour Selenium WebDriver (a.k.a. Selenium2) avec Java:

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

OU,

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

Une autre façon d’appuyer sur Entrée dans WebDriver à l’aide de la classe Actions:

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'

référez-vous à la documentation de Selenium 'Special Keys'

4
Ashish gupta

si vous recherchez "comment appuyer sur la touche Entrée du clavier dans Selenium Webdriver (Java)", le code ci-dessous vous aidera certainement.

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

Pour entrer des clés avec Selenium .__, vous devez d'abord importer la bibliothèque suivante: 

"import org.openqa.Selenium.Keys"

puis ajoutez ce code où vous voulez entrer la clé

"WebElement.sendKeys(Keys.RETURN);"

Vous pouvez remplacer RETURN par n’importe quelle touche de la liste en fonction de vos besoins.

2
RNS

Il existe différentes manières d’appuyer sur les touches - 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

Je devais envoyer la touche Entrée au milieu d'un texte. J'ai donc passé le texte suivant pour envoyer la fonction des clés pour atteindre 1\n2\n3

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

Essayez d'utiliser XPATH pour rechercher l'élément, puis le code suivant fonctionne:

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

Pourrait également être utilisé avec l’interface Action, dans le cas de WebDriver -

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

Pour Ruby: - 

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

Si vous êtes dans cette situation spécifique:

a) voulez JUSTE appuyer sur la touche, mais sans avoir un élément Web spécifique à cliquer

b) vous utilisez Selenium 2 (webDriver)

Alors la solution est:

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

Java/JavaScript:

Vous pourriez probablement le faire de cette façon aussi, de manière 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

Lorsque vous ne souhaitez rechercher aucun localisateur, vous pouvez utiliser la classe Robot:

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

Tu peux essayer :

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

Pour Selenium WebDriver utilisant xpath (si la clé est visible): 

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

ou,

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

Ça marche

1
Sanju Abel

Vous pouvez appeler submit() sur l'objet élément dans lequel vous avez saisi votre texte.

Alternativement, vous pouvez spécifiquement lui envoyer la touche Entrée comme indiqué dans cet extrait de code python

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

En Python - Étape 1. à partir de Selenium.webdriver.common importez des clés Étape 2 driver.find_element_by_name (""). Send_keys (keys.Keys.ENTER)

Remarque - vous devez écrire keys.keys.ENTER

0
jayesh

Pour tous ceux qui utilisent javascript/node, cela a fonctionné pour moi:

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