Ввод Enter / Return ключ в Selenium - PullRequest
       57

Ввод Enter / Return ключ в Selenium

217 голосов
/ 27 октября 2009

Я ищу быстрый способ ввода и ввода или возврата ключа в Selenium. К сожалению, форма, которую я пытаюсь проверить (не мой собственный код, поэтому я не могу изменить), не имеет кнопки Отправить. Работая с ним вручную, я просто набираю ENTER или RETURN . Мне нужно знать, как это сделать с помощью команды Selenium type, так как кнопка не нажимается.

Ответы [ 29 ]

270 голосов
/ 18 августа 2011
import org.openqa.selenium.Keys

WebElement.sendKeys(Keys.RETURN);

оператор import предназначен для Java, для других языков он может быть другим, например, python: from selenium.webdriver.common.keys import Keys

160 голосов
/ 28 февраля 2014

JAVA

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

OR

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)

OR

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

OR

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

OR

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

OR

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

C #

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

OR

driver.FindElement(By.Id("Value")).SendKeys(Keys.Enter);
26 голосов
/ 11 апреля 2011

Теперь, когда Selenium 2 выпущен, посылать клавишу Enter немного проще, поскольку вы можете сделать это с помощью метода send_keys класса selenium.webdriver.remote.webelement.WebElement (этот пример кода на 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")
21 голосов
/ 15 декабря 2017

Вы можете использовать либо 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

Enum Keys - это представления нажимаемых клавиш, которые не являются текстовыми. Они хранятся в кодовых точках Unicode PUA ( Частная область ), 0xE000-0xF8FF.

Ключевые коды:

Специальные keys codes для них следующие:

  • ВОЗВРАТ = u'\ue006'
  • ENTER = u'\ue007'

Реализация всех Enum Keys обрабатывается одинаково.

Следовательно, это Нет Functional или Operational Разница при работе с sendKeys(Keys.ENTER); или WebElement.sendKeys(Keys.RETURN); - Селен .


Ввод ключа и возврата ключа

На компьютерных клавиатурах Enter (или Return в Mac OSX) в большинстве случаев заставляет командную строку, форму окна или диалоговое окно работать по умолчанию. Обычно это завершает «ввод» и начинает нужный процесс, и обычно является альтернативой нажатию кнопки «ОК».

Return часто также называют Enter , и они обычно выполняют идентичные функции; однако в некоторых конкретных приложениях (в основном макет страницы) Return работает точно так же, как ключ Carriage Return , из которого он исходит. Напротив, Enter обычно обозначается своим именем в виде обычного текста на обычных клавиатурах ПК.


Ссылки

12 голосов
/ 28 января 2014

При написании HTML-тестов клавиша ENTER доступна как ${KEY_ENTER}.

Вы можете использовать его с sendKeys, вот пример:

sendKeys | id=search | ${KEY_ENTER}
9 голосов
/ 27 октября 2009
selenium.keyPress("css=input.tagit-input.ui-autocomplete-input", "13");
8 голосов
/ 11 октября 2012

Вы просто делаете это:

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);
6 голосов
/ 01 октября 2015

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

6 голосов
/ 18 января 2016
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')

ENTER = u '\ ue007'

см. Документацию по селену «Специальные ключи»

6 голосов
/ 17 мая 2013

Для тех, кто использует 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;
};
...