Я пытаюсь выбрать дату в своем календаре, но Nightwatch не может выбрать ее должным образом.

Я пытаюсь сделать следующее:

document.querySelector("#calendario_inline > div > div > div > select.ui-datepicker-month")
    .click()
    .pause(100)
    .setValue('//*[@id="calendario_inline"]/div/div/div/select[1]', 'OUT')

document.querySelector("#calendario_inline > div > div > div > select.ui-datepicker-year")
    .click()
    .pause(100)
    .setValue('//*[@id="calendario_inline"]/div/div/div/select[2]', '2019')
    .pause(100)
    .click('//*[@id="calendario_inline"]/div/table/tbody/tr[3]/td[4]/a')
    .pause(1000)

Вот скрипка для моего календаря:

https://jsfiddle.net/dnj0zqa4/

0
aeutalt 25 Окт 2019 в 15:00
Нужны подробности. Прокомментируйте свой код тем, что вы пытаетесь сделать на каждом этапе. Какие результаты вы получаете в награду за Nightwatch?
 – 
QualiT
26 Окт 2019 в 08:16
Во-первых, селекторы, подобные тем, которые вы использовали, чрезвычайно хрупкие, и их следует избегать. Попробуйте дуэт targetContainer - targetElement ( если возможно, и это потому, что я проверил предоставленный вами HTML ). Во-вторых, при возникновении таких проблем всегда добавляйте ошибку трассировки стека из консоли, иначе мы понятия не имеем, что вызывает проблему.
 – 
iamdanchiv
26 Окт 2019 в 15:47
Наконец, извините, что укажу на это, но это не Nightwatch, который не может выбрать его должным образом, это ваш код, который этого не делает.
 – 
iamdanchiv
26 Окт 2019 в 15:50

1 ответ

Лучший ответ

РЕДАКТИРОВАТЬ:

Кажется, что календарь находится внутри iframe. Сначала вам нужно получить к нему доступ. Использовать этот::

client.element("css selector", "#editor > div.panel-v.right > div.panel-h.panel.resultsPanel > iframe", function(response) {
            client.frame({ELEMENT: response.value.ELEMENT});
        });

И после того, как вы закончите с календарем, выйдите из окна iframe с помощью .frame(null)


Попробуй это:

Для МЕСЯЦА, чтобы выбрать Октябрь (значение 9):

client.useXpath().click('//select[@class="ui-datepicker-month"]/option[@value="9"]').useCss();

Для ГОД, чтобы выбрать 2019:

client.useXpath().click('//select[@class="ui-datepicker-year"]/option[@value="2019"]').useCss();
0
Alichino 5 Ноя 2019 в 14:07