349 votes

Taper sur la touche Entrée/Retour dans Selenium

Je suis à la recherche d'un moyen rapide pour taper la touche Entrée ou Retour en Selenium.

Malheureusement, le formulaire que j'essaie de tester (ce n'est pas mon propre code, donc je ne peux pas le modifier) n'a pas de bouton Envoyer. Lorsque je travaille avec lui manuellement, je tape simplement Entrée ou Retour. Comment puis-je faire cela avec la commande Selenium type puisqu'il n'y a pas de bouton à cliquer?

2 votes

1 votes

Merci, c'était exactement ce dont j'avais besoin!

0 votes

@croixhaug: Que utilisez-vous? Selenium RC ou WebDriver (Selenium 2)? Qu'en est-il de la langue? Java? C#? ou quoi?

362voto

Ralph Points 42744
import org.openqa.selenium.Keys

WebElement.sendKeys(Keys.RETURN);

L'instruction import est pour Java. Pour d'autres langues, cela peut être différent. Par exemple, en Python, c'est from selenium.webdriver.common.keys import Keys

36 votes

Je crois que cela a été déplacé. from selenium.webdriver.common.keys import Keys (stackoverflow.com/questions/5503489/…)

0 votes

@HJames Broadhead: J'ai vérifié, la classe Keys pour le JAVA actuel (2.17.0) est toujours org.openqa.selenium.Keys

0 votes

WebElement.sendKeys(Keys.RETURN); ce code est parfait pour WebDriver (pas pour Selenium RC). Plus de détails exemple pour la recherche google : driver.findElement(By.id("gbqfq")).clear(); driver.findElement(By.id("gbqfq")).sendKeys("Ripon Al Wasim"); driver.findElement(By.id("gbqfq")).sendKeys(Keys.RETURN);

261voto

Prashanth Sams Points 959

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

Ruby

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

1 votes

Pour Python, j'ai trouvé que l'ajout de "\n" à la chaîne d'entrée est la manière la plus directe d'aller. Ça a fonctionné dans un champ de recherche.

29voto

Eli Courtwright Points 53071

Maintenant que Selenium 2 a été publié, 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("Bonjour le Monde\n")

2 votes

Ou plus généralement, les valeurs de Keys (l'import peut être de selenium.webdriver.common.keys import Keys), Keys.RETURN dans ce cas.

12voto

Maurice Svay Points 51

Lors de l'écriture de tests HTML, la touche ENTER est disponible sous forme de ${KEY_ENTER}.

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

sendKeys | id=search | ${KEY_ENTER}

1 votes

Quel 'langage'/contexte? Bash (ligne de commande)? Linux? Pouvez-vous ajouter un peu de contexte à votre réponse?

0 votes

C'est pour des suites de tests HTML

9voto

Nirmal Patel Points 2792
selenium.keyPress("css=input.tagit-input.ui-autocomplete-input", "13");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X