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.
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
driver.findElement(By.id("Value")).sendKeys(Keys.RETURN);
OU,
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)
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()
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
driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);
OU,
driver.FindElement(By.Id("Value")).SendKeys(Keys.Enter);
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")
Vous pouvez utiliser Keys.ENTER
ou Keys.RETURN
. Voici quelques détails:
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 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.
Le spécial keys codes
pour eux est le suivant:
u'\ue006'
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 .
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.
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}
Selenium.keyPress("css=input.tagit-input.ui-autocomplete-input", "13");
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);
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;
};
driver.findElement(By.id("Value")).sendKeys(Keys.RETURN);
ou driver.findElement(By.id("Value")).sendKeys(Keys.ENTER);
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 )
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();
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')
référez-vous à la documentation de Selenium 'Special Keys'
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);
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.
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);
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
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
Essayez d'utiliser XPATH pour rechercher l'élément, puis le code suivant fonctionne:
driver.findElement(By.xpath(".//*[@id='txtFilterContentUnit']")).sendKeys(Keys.ENTER);
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();
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();
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);
}
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);
Tu peux essayer :
Selenium.keyPress("id="","\\13");
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);
object.sendKeys("your message",Keys.ENTER);
Ça marche
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
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
Pour tous ceux qui utilisent javascript/node, cela a fonctionné pour moi:
driver.findElement(By.xpath('xpath')).sendKeys('ENTER');