Как выбрать конкретное местоположение из выпадающего списка, который запускается динамически с помощью API-ответа в Selen Webdriver? - PullRequest
0 голосов
/ 05 декабря 2018

Описание проблемы:

Я пытаюсь автоматизировать заполнение формы, в которой есть раскрывающийся список населенных пунктов.Я столкнулся с проблемой при выборе варианта, который предлагается в списке предложений.Параметры в списке предложений представлены ответом API, то есть его динамикой.Я не могу выбрать одну из опций из предложенного списка.

String Locality ="//label[contains(text(),'Locality')]/following-sibling::input";

public void insertData(DataTable str) throws InterruptedException {
    List<List<String>> list = str.asLists(String.class);
    super.identifyElement(locators.xpath, Locality), list.get(1).get(5));// value sendkey= Akurdi;

Элемент HTML:

<label _ngcontent-c4="" for="Location" class="active">Locality</label>
<input _ngcontent-c4="" autocapitalize="off" autocorrect="off" class="mb-0 ng-valid ng-dirty ng-touched" formcontrolname="locality" placeholder="" spellcheck="off" stype="locality" type="text" ng-reflect-klass="mb-0" ng-reflect-ng-class="[object Object]" ng-reflect-name="locality" ng-reflect-model="Akurdi" autocomplete="off">

Форма значения Sendkey: сценарий огурца: Akurdi ... ПоказатьРаскрывающийся список ввода UI

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Раствор

        WebDriver driver = new ChromeDriver();

        driver.get("http://connexistech.net/godamwale/warehouse");

        WebElement locality = driver.findElement(By.xpath(".//div[@id='location']//input")); 

        locality.sendKeys("Akrudi");
       //Here at the end [1] can be any item from 1 to 5 since its showing only 5 suggestions all the time
        String xp = "//div[contains(@class, 'pac-container')]//div[contains(@class, 'pac-item')][1]";

        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//div[contains(@class, 'pac-container')]/div[contains(@class, 'pac-item')]")));
        WebElement element = driver.findElement(By.xpath(xp));             

        wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("xp")));
        element.click();
0 голосов
/ 05 декабря 2018

В этих случаях я работаю с этими раскрывающимися списками, как с обычным списком.Нажав на раскрывающееся меню, ожидая появления раскрывающегося списка, затем итерируя в списке его элементов, ища то, что мне нужно по имени, затем нажимая на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...