https://imgur.com/bcKQIJr <- Изображение календаря

У меня есть календарь, который требует двойного щелчка для выбора дат. Я работаю в Javascript, а библиотека NodeJS Selenium-webdriver имеет довольно ограниченный набор событий, без возможности двойного щелчка ... Нужно ли мне включать другую библиотеку для функции двойного щелчка или чего-то еще? Я действительно врезался в стену.

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

`el = driver.findElement(By.xpath("//div[@class='container']//table[2]//tbody[1]//tr[1]//td[3]"));

el.click()
.then(_ => driver.sleep(250))
.then(_ => el.click())
`

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

1
Dave Kubo 28 Дек 2018 в 01:12

2 ответа

Лучший ответ

В некоторых случаях (специфичных для браузеров) это может не работать для календарей. Для этой цели вам может потребоваться использовать javascript-исполнитель. Ниже приведен код для справки.

    let ele = document.evaluate("//th[@title='Chrome']", document, null,XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
    var clickEvent = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('dblclick', true, true);
    ele.dispatchEvent (clickEvent);

Это должно имитировать двойной щелчок по элементу. Сохраните этот скрипт в переменной (например, scrpit) и отправьте в браузер для выполнения с помощью js-исполнителя. ниже приведен пример кода, предполагающего, что переменная script содержит скрипт js

    driver.executeScript(script).then(function(return_value) {
       console.log('returned ', return_value)
    }); 
1
neeraj jain 28 Дек 2018 в 22:40

Вы должны иметь возможность использовать метод actions(), как описано в ответ на этот вопрос.

driver.actions().doubleClick(el).perform();
0
MPawlak 27 Дек 2018 в 22:33