WebElement.sendKeys (CharSequence ...) через Selenium отправляет только частичное значение - PullRequest
0 голосов
/ 29 апреля 2019

Установить значение в элементе ввода:

WebElement input = ...
input.sendKeys("1234989");

Иногда элемент ввода получает только «1», а не «1234989», какое-либо состояние гонки здесь?

Другой способ:

Actions actions = new Actions(driver);
actions.sendKeys(input, "1234989").build().perform();

Кажется, этот работает лучше. В чем разница?

1 Ответ

0 голосов
/ 29 апреля 2019

Соответствующий HTML-код нужного элемента помог бы нам отладить, почему нужный элемент заполняется только с 1 вместо 1234989 .Однако, согласно рекомендациям, при отправке последовательности символов в поле input вы всегда должны вызывать WebDriverWait для elementToBeClickable() следующим образом:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("css_input_element"))).sendKeys("1234989");

Вы можете найти пару соответствующих обсуждений в:


sendKeys(WebElement target, java.lang.CharSequence... keys)

sendKeys (цель WebElement, ключи java.lang.CharSequence ...) отActions класс и эквивалентен вызову Actions.click(element).sendKeys(keysToSend).Этот метод отличается от WebElement.sendKeys(CharSequence...).


public Actions sendKeys(java.lang.CharSequence... keys)

public Actions sendKeys(java.lang.CharSequence... keys) отправляет CharSequence на активный элемент .Опять же, это отличается от вызова WebElement.sendKeys(CharSequence...) на активном элементе двумя способами:

  • Клавиши-модификаторы, включенные в этот вызов, не отпускаются.
  • Не предпринимается попытка перефокусироватьэлемент, поэтому sendKeys(Keys.TAB) для переключения элементов должен работать.

Подробное обсуждение можно найти в При использовании метода click_and_hold от Selenium, какие именно условия или действия вызывают отпускание щелчка мыши?

...