Выберите параметр в пользовательском раскрывающемся списке с помощью селена Webdriver - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь выбрать опцию в DropDown, используя селен Java. Я также попробовал много решений. Элемент страны обнаружен при выполнении XPath в FirePath, но не найден во время выполнения сценария.

Селен код:

    driver.findElement(By.xpath("//*[@class='selectize-input items not-full has-options']")).click();
    Thread.sleep(500);

    String countryXpath = "//*[@class='select-item']/following::span[text()='India']";
    System.out.println(countryXpath);
    WebElement countryName = driver.findElement(By.xpath(countryXpath));

    ScrollHelper.ScrollHorizontalUpToVisibilityOfElement(countryName);
    countryName.click();

HTML код:

<select class="selectized isfocused parsley-error" name="Country" data-input-parsley="" data-parsley-trigger="change input" data-parsley-required-message="This field should not empty" data-parsley-required="true" data-parsley-group="country-select" tabindex="-1" style="display: none;" data-parsley-id="17">
    <option value="" selected="selected"/>
</select>
<div class="selectize-control single">
    <div class="selectize-input items has-options not-full focus input-active dropdown-active">
        <input autocomplete="off" tabindex="" style="width: 100%; opacity: 1; position: relative; left: 0px;" placeholder="" type="text"/>
    </div>
    <div class="selectize-dropdown single" style="display: block; visibility: visible; width: 413px; top: 32px; left: 0px;">
    <div class="selectize-dropdown-content">
    <div class="select-item" data-selectable="" data-value="6">
        <div class="select-option">
            <span class="text">   Australia </span>
        </div>
    </div>
    <div class="select-item" data-selectable="" data-value="2">
        <div class="select-option">
            <span class="text">   Canada </span>
        </div>
    </div>
    <div class="select-item" data-selectable="" data-value="21">
        <div class="select-option">
            <span class="text">   China </span>
        </div>
    </div>
    <div class="select-item" data-selectable="" data-value="22">
        <div class="select-option">
            <span class="text">   India </span>
        </div>
    </div>
    <div class="select-item" data-selectable="" data-value="25">
        <div class="select-option">
            <span class="text">   USA </span>
        </div>
    </div>
</div>

enter image description here

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

В Html span-текст содержит пробелы перед названием страны

  <span class="text">   India </span>

Обновите xpath как

String countryXpath = "//*[@class='select-item']/following::span[contains(text(), 'India')]";

Вышеупомянутый xpath проверит, содержит ли текст пролета Индию

0 голосов
/ 03 мая 2018

Если вы можете нажать на страну проживания, вам нужно прокрутить вниз немного, и тогда этот код может работать для вас:

List<WebElement> countries = driver.findElements(By.cssSelector("div[class='select-option']>span"));
for(WebElement country : countries){
if(country.getText().trim().equals("Singapore"))
country.click();
}  

Для прокрутки вниз, если у вас возникли проблемы, пожалуйста, дайте мне знать.

0 голосов
/ 03 мая 2018

Попробуйте использовать этот xpath для нажатия на элемент:

"//span[contains(text(), 'India')]"

Дайте мне знать, если это работает.

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