t.me/atinfo_chat Telegram группа по автоматизации тестирования

codeception Click context, не кликнуть на элемент

Теги: #<Tag:0x00007f74883c92c8> #<Tag:0x00007f74883c91d8> #<Tag:0x00007f74883c90c0> #<Tag:0x00007f74883c8f80> #<Tag:0x00007f74883c8e90>

Есть сайт 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 для поиска корректных локаторов :wink:

Не поверишь, пробовал пользоваться такими штуками, но с этим сайтом как-то не прокатывает…

А кто-нить может предложить работающий вариант?
Там используется фрейм, я на него позиционируюсь, но доступ к элементу получить не получается…

Думаю, что сначала надо переключиться на 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 Симпатий

Спасибо большое за помощь, все получилось )

Подскажи, плиз, как можно подвинуть ползунок цены, чтобы выставить определенную сумму?

двинуть ползунок могу, а вот выставить нужную сумму, не получается…

Ну самый простой способ это:

    $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 Симпатий

спс )