Невозможно ввести символы в текстовое поле, используя селен sendKeys - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь ввести символы в текстовое поле, но это не работает. Ниже я упомянул 2 фрагмента кода. JS вообще не работает. Где, как в первом фрагменте кода, щелчок работает, но не другие шаги. Xpath правильный, так как щелчок работает над этим.

    util.driver.findElement(By.xpath("//input[@id='input-1']")).click();
    util.driver.findElement(By.xpath("//input[@id='input-1']")).clear();
    util.driver.findElement(By.xpath("//input[@id='input-1']")).sendKeys("hjgfjg");
JavascriptExecutor js = (JavascriptExecutor) util.driver;

js.executeScript("document.getElementByXpath('//input[@id='input-1']').value = 'TEST')");

enter image description here

Ответы [ 3 ]

1 голос
/ 03 октября 2019

Требуемый элемент является динамическим элементом, поэтому для вызова sendKeys() на элементе необходимо вызвать WebDriverWait для elementToBeClickable(), и вы можете использовать любую из следующих стратегий локатора :

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.slds-input[id^='input-'][aria-describedby^='help-message-']"))).sendKeys("hjgfjg");
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='slds-input' and starts-with(@id, 'input-')][starts-with(@aria-describedby, 'help-message-')]"))).sendKeys("hjgfjg");
    
0 голосов
/ 03 октября 2019

Вероятно, вы можете попробовать следующие варианты:

  1. Попробуйте сначала нажать на текстовое поле, а затем вызвать sendKeys ().
  2. Angular не может обрабатывать входные события, когда они приходят слишком быстро,В качестве обходного пути вам нужно будет отправлять отдельные символы с небольшой задержкой между каждым.

Selenium sendKeys не отправляет все символы

Вы можете попробовать использовать класс Actions.
0 голосов
/ 03 октября 2019

Попробуйте использовать Actions:

WebElement input = util.driver.findElement(By.xpath("//input[@id='input-1']"));
Actions action = new Actions(util.driver);
action.moveToElement(input).click().sendKeys("test").build().perform();

После импорта:

import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
...