Я новичок в автоматизации с селеновым webdriver.Я пытаюсь забронировать рейс на сайте путешествия.(ryanair.com)
Я застреваю во всплывающем окне выбора даты.Я могу использовать .sendkeys только для ввода дня, после того, как какое-либо поле на вводе даты будет щелкнуто, всплывающий календарь появится так, что если формат ввода равен dd / mm / yyyy и я хочу ввести «20042019», он вводится только20 в дд, а затем автоматически выбирает текущий месяц и год для автозаполнения и открывает всплывающее окно календаря.
Я читал несколько статей, в которых говорилось, что эти календари обычно бывают двух типов: 1. iframe 2. datepicker - я думаю, что на ryanair есть datepickers, основанные на xpath ниже
//div[@id='datetimepicker_dateview']//table//tbody//td[not(contains(@class,'k-other-month')
Может быть, это неправильный xpath?Но я думаю, что это правильно
Я попытался найти список дат для бронирования, используя:
List<WebElement> list_AllDateToBook = driver.findElements(By.xpath()
System.out.println("size of list is : " + list_AllDateToBook.size() );
System.out.println("list is : " + list_AllDateToBook );
Вывод: размер списка: 0 список: []
Когда я использую xpath для ввода даты в поле даты, оно работает для первого ввода, используя:
WebElement day = driver.findElement(By.xpath("//*[@id='row-dates-pax']/div[1]/div/div[1]/div/div[2]/div[2]/div/input[1]"));
Однако, когда я изменяю xpath на второй ввод, он не будет вводить второй ввод(месяц)
WebElement day = driver.findElement(By.xpath("//*[@id='row-dates-pax']/div[1]/div/div[1]/div/div[2]/div[2]/div/input[2]"));
Ниже приведен пример HTML-кода для выбора даты (слишком долго, чтобы добавить все это!)
<core-datepicker class="start-date" default-date="" start-date="18-03-2019" end-date="28-03-2020" highlight-from="20-03-2019" highlight-to="20-04-2019" end-show="true" fly-out="true" value="dateRange.startDate" cb-event-id="cal-selector:select-start-date" unavailable-dates="dateRange.unavailabiltyStartDates" selected-month-view="dateRange.startDateSelectedMonthView" show-month-toggle="::dateRange.showMonthToggle" show-single-month=""><!----><div ng-class="::{'has-monthly-toggle': isMonthToggleVisible()}"><div bindonce="" class="datepicker-wrapper r scrollable value-selected" ng-class="{ scrollable: !device.isPhone(), mobile: device.isPhone(), 'value-selected': value, 'six-rows': checkIf6Rows()}" style="transition-timing-function: cubic-bezier(0.1, 0.57, 0.1, 1); transition-duration: 0ms; transform: translate(0px, 0px) translateZ(0px);"><!----><!----><ul ng-if="!device.isPhone()"><!----><li bindonce="" ng-repeat="i in _monthViews" ng-class="{ 'starting-month': checkIfIsSame(getDate(i), highlightFrom, 'month'), 'selected-month': checkIfIsSame(getDate(i), value, 'month'), 'highlight-on': canHighlight(i) }" class="calendar-view starting-month selected-month"><h1 class="month-name">March 2019</h1><ul class="week-days"><!---->
Я действительно застрял здесь.Любой совет будет отличным.
Спасибо