Как щелкнуть динамический элемент внутри класса span - PullRequest
0 голосов
/ 06 января 2019

Я довольно новичок в Selenium и автоматизации пользовательского интерфейса. Возникли проблемы с нажатием на динамический элемент внутри класса span. Так что этот идентификатор каждый раз меняется для каждого из 3 выпадающих элементов. Таким образом, каждый класс для каждого этого элемента одинаков, что также создает проблему.

Так что мне нужно изменить значение на id="react-select-2585057--value-item"

<div class="field loan-selection">
        <label class="field__body">
            <div class="field__label">Verwendung
                <!-- -->&nbsp;
            </div>
            <div class="field__control">
                <div class="Select customSelect has-value Select--single">
                    <div class="Select-control">
                        <span class="Select-multi-value-wrapper" id="react-select-2585057--value">
                            <div class="Select-value">
                                <span class="Select-value-label" role="option" aria-selected="true" id="react-select-2585057--value-item">Freie Verwendung</span>
                            </div>
                            <div aria-expanded="false" aria-owns="" aria-activedescendant="react-select-2585057--value" aria-disabled="false" class="Select-input" role="combobox" style="border:0;width:1px;display:inline-block" tabindex="0"></div>
                        </span>
                        <span class="Select-arrow-zone">
                            <span class="Select-arrow"></span>
                        </span>
                    </div>
                </div>
            </div>
        </label>
    </div>

1 Ответ

0 голосов
/ 07 января 2019

В соответствии с HTML для вызова click() для элемента с динамическим идентификатором как id = "response-select-2585057 - value-item" при условии, что этот элемент всегда будет быть потомком узла <div class="field__label">, вам нужно заставить WebDriverWait , чтобы желаемый элемент был кликабелен , и вы можете использовать следующее решение:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='field loan-selection']//div[@class='field__label' and contains(., 'Verwendung')]//following::div[1]//span[@class='Select-value-label' and starts-with(@id,'react-select-')]"))).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...