Shine
(Shine)
15.Ноябрь.2018 07:57:11
#1
Есть сайт https://www.aviasales.ru/
Необходимо сделать скрипт автоматической подписки на билеты.
Для этого захожу в Сервис->Подписки и рассылки->Ввожу почту(можно любую), нажимаю кнопку подписаться, открывается форма “Оформление подписки”, кликаю на кнопку “Гибкие даты”.
Не получается нажать на кнопку месяца (месяц будет передаваться).
Подскажите, что нудно подставить в $I->click(), чтобы я мог нажать на нужный месяц?
Мой код:
$I->amOnPage('/');
$I->click("//*[@class='header-menu__label-text']");
$I->wait(2);
$I->click('//*[@class="header-menu__service-item --subscription"]');
$I->fillField("//*[@class=\"input__field\"]", 'mysupermail@inbox.ru');
$I->wait(2);
$I->click('//*[@class="button"]');
$I->wait(2);
//Кнопка "Гибкие даты"
$I->click("//*[@id=\"modal_w\"]/div[2]/div[4]/div/div[2]/div[1]/div[2]");
$I->wait(2);
//Нажать на ЯНВАРЬ (ТУТ НЕ РАБОТАЕТ)
$I->click( 'Янв','//*[@class="woody__months-block woody__cf"]/div/div[2]/div/span');
Если ты в Firefox - установи себе TrueXpath и правым кликом он тебе предложит массу вариантов, а еще есть SwdPageRecorder для поиска корректных локаторов
Shine
(Shine)
15.Ноябрь.2018 08:41:51
#3
Не поверишь, пробовал пользоваться такими штуками, но с этим сайтом как-то не прокатывает…
Shine
(Shine)
16.Ноябрь.2018 08:12:40
#4
А кто-нить может предложить работающий вариант?
Там используется фрейм, я на него позиционируюсь, но доступ к элементу получить не получается…
Думаю, что сначала надо переключиться на iframe, а в нём уже совершать дальнейшие действия.
$I->switchToIFrame("popup-subscribe-iframe");
$I->click("//*[@id='modal_w']/div[2]/div[4]/div/div[2]/div[1]/div[2]");
$month = 'Янв';
$I->click( "//*[.='".$month."']");
2 лайка
Shine
(Shine)
17.Ноябрь.2018 16:29:00
#6
Спасибо большое за помощь, все получилось )
Shine
(Shine)
17.Ноябрь.2018 18:54:32
#7
Подскажи, плиз, как можно подвинуть ползунок цены, чтобы выставить определенную сумму?
Shine
(Shine)
17.Ноябрь.2018 19:02:48
#8
двинуть ползунок могу, а вот выставить нужную сумму, не получается…
Ну самый простой способ это:
$price = 115000;
$priceSlider = "//span[contains(text(),'Цена')]/..//*[contains(@class, 'woody__slider')]";
$priceSliderPoint = "//span[contains(text(),'Цена')]/..//*[contains(@class, 'ui-slider-handle')]";
$priceFrom = "//span[contains(text(),'Цена')]/..//*[contains(text(), 'До')]//*[contains(@class,'amount')]";
$sliderStep = $I->grabAttributeFrom($priceSlider, "step");
$maxPrice = $I->grabAttributeFrom($priceSlider, "max");
$stepsQty = ($maxPrice-$price)/$sliderStep;
for($i = 1; $i <= $stepsQty; $i++){
$I->pressKey($priceSliderPoint, \WebDriverKeys::ARROW_LEFT);
}
$I->waitForText((string)$price, 5, $priceFrom);
Но есть и другие =)
2 лайка