Найдите и щелкните элемент, используя Selenium, Java

Я пытаюсь щелкнуть элемент и после этого хочу выбрать дату между сегодняшним и последним днем.

Вот изображение введите здесь описание изображения

Я могу щелкнуть элемент Дата добавления позиции, но я застрял здесь: «Как я могу выбрать «Первый выбор даты» и выбрать последний день, а затем нажать Кому и выберите сегодняшнюю дату.

вот xpath

//*[contains(text(), 'Position Added Date:')]/input[@class='datetime-picker-date']

Вот код элемента, который отображается после нажатия раскрывающегося списка

<div class="jquery-ui-v1-10-3 dropdown-filter-edit-popup group" data-bind="control: EditorPopup" style="display: block;">

    <a class="clear-filters" href="#" data-bind="click: Clear, css: { disabled: !CanClear() }">Clear Items</a>

    <button data-bind="visible: HelpButtonVisible, click: HelpClick, css: {close: HelpOpen() == true }" class="help close" style="display: none;"></button>

    <div class="filter-content" data-bind="control: EditViewModel, event: { keydown: EditorKey }"><div class="date-range-filter Edit">
        <div class="form-group">
            <label class="">From:</label>
            <div data-bind="control: From" class=""><!-- ko if: !HideDate -->
                <input type="text" class="datetime-picker-date hasDatepicker input-sm" data-bind="value: Date, valueUpdate: 'keyup', jqWidget: { datepicker: DatePickerArgs }, assignTo: DateField, attr: { 'readonly': IsReadOnly() }, enable: IsEnabled, css: { 'input-sm': SmallSize }" id="dp1474822442990">
                <!-- /ko -->
                <!-- ko if: !HideTime --><!-- /ko --></div>
            </div>
            <div class="form-group">
                <label class="">To:</label>
                <div data-bind="control: To" class=""><!-- ko if: !HideDate             -->
                    <input type="text" class="datetime-picker-date hasDatepicker input-sm" data-bind="value: Date, valueUpdate: 'keyup', jqWidget: { datepicker: DatePickerArgs }, assignTo: DateField, attr: { 'readonly': IsReadOnly() }, enable: IsEnabled, css: { 'input-sm': SmallSize }" id="dp1474822442991">
                    <!-- /ko -->
                    <!-- ko if: !HideTime --><!-- /ko --></div>
            </div>
        </div>
    </div>
</div>

Я не могу использовать идентификаторы, так как это динамика.

Пожалуйста, порекомендуйте.

Спасибо


person Mubin    schedule 26.09.2016    source источник
comment
Изменяются ли эти идентификаторы для ввода или они всегда одинаковы? Если они статичны, я бы порекомендовал подключиться к ним как к средству выбора календаря и Кому, чтобы календарь отображался. Что касается дат в календаре, присмотритесь. Возможно, существуют специальные имена классов, такие как сегодня, связанные с сегодняшней датой.   -  person robx    schedule 27.09.2016
comment
идентификаторы меняются при каждом обновлении, а datetime-picker-date — это класс, которому назначены поля To и From input.   -  person Mubin    schedule 28.09.2016


Ответы (1)


Вместо открытия календаря и выбора даты вы можете использовать .sendKeys() для ввода даты в соответствующем формате, как показано ниже:

WebDriverWait wait = new WebDriverWait(driver, 10);
  • Введите From дату :-

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div[data-bind*='From'] > input.datetime-picker-date"))).sendKeys("From data in expected date format");
    
  • Введите To дату :-

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div[data-bind*='To'] > input.datetime-picker-date"))).sendKeys("To date in expected date format");
    
person Saurabh Gaur    schedule 26.09.2016