Селен: - Невозможно написать в текстовом поле - PullRequest
0 голосов
/ 06 февраля 2020

Событие click работает нормально, но событие sendKeys - нет.

Мой код: -

 driver.findElement(By.id("radio-1-4")).click();
 jse.executeScript("scroll(0, 500);");
 System.out.println("Authority Filter");
 driver.findElement(By.xpath("//*[@class=\"filter-label-text\" and text()= 'Authority']")).click();
 Thread.sleep(3000);
 //driver.findElement(By.xpath("//label[@class=\"control-label\" and @for='tfid-665-0']//parent::div[1]/child::input")).sendKeys("Public Work Department");
 WebElement element = driver.findElement(By.id("tfid-602-0"));
 element.click();
 element.sendKeys("public");

Я получаю ошибку:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#tfid\-602\-0"}
(Session info: chrome=79.0.3945.130)

HTML текстового поля: -

<div class="form-group form-group-depth-1 form-group-search">
    <label for="tfid-664-0" class="control-label">
    </label>
    <input type="text" placeholder="Search for Authorities" id="tfid-664-0" name="search" class="form-control" value="">
</div>

1 Ответ

0 голосов
/ 06 февраля 2020

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

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.form-group-search>label.control-label[for^='tfid']"))).sendKeys("public");
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='form-control' and @placeholder='Search for Authorities']//preceding::label[1]"))).sendKeys("public");
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...