Перейти к содержимому

Фотография

Не получается кликнуть


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 Serjant6993

Serjant6993

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 11 марта 2020 - 11:48

Доброго времени суток. Прошу помощи в автоматизации процесса добавления товара в корзину(кучу всего перепробовал ничего не помогает). Кратко о процессе:

  1.  Ввожу "лампа" в поисковую строку и нажимаю Enter. 
  2. Для первых i товаров, из результата поиска, нажимаю "В корзину".
  3. Потом перехожу в корзину.

Проблема состоит в том, что первый раз нормально всё нажимается, а во второй нет, выдаёт ошибку ( Selenium 2.52, FF 45 ). Если использовать js то ничего не происходит. Actions - та же ошибка, что и у клика

org.openqa.selenium.WebDriverException: Element is not clickable at point (963.0499877929688, 0.5). 
Other element would receive the click: <div class="modal-backdrop fade"></div>

Код поиска кнопки "В корзину"

    public WebElement getHomePage__CurrentButtonInBasket(int i){// i-я кнопка В КОРЗИНУ
        try{      
            if (flag){
                flag =false;
            }else{

                WebElement dynamicElement = (new WebDriverWait(driver, 10))
                .until(ExpectedConditions.visibilityOfElementLocated(By.id("cartModal")));

                JavascriptExecutor executor = (JavascriptExecutor)driver;
                executor.executeScript("arguments[0].click();", dynamicElement.findElement(By.xpath("./div/div/div/button")));
            }            
            List<WebElement> list = (new WebDriverWait(driver, 10))
            .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className("item-action-btn"));
      
            return list.get(i);
        }catch(Exception e){return null;}
    }

Сама страница:https://rs24.ru/sear...=1&Dy=1&Nrpp=16


  • 0

#2 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 11 марта 2020 - 11:52

Как вы думаете, что значит фраза 

Other element would receive the click: <div class="modal-backdrop fade"></div>

?
  • 0

#3 Serjant6993

Serjant6993

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 11 марта 2020 - 12:34

Другой элемент находится сверху и из-за этого не кликает?

 


  • 0

#4 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 11 марта 2020 - 13:00

Другой элемент находится сверху и из-за этого не кликает?


Ага
  • 0

#5 Serjant6993

Serjant6993

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 11 марта 2020 - 13:14

 

Другой элемент находится сверху и из-за этого не кликает?


Ага

 

А как лечить?) С помощью js не получается. Видно что наводится на элемент но действия не происходит.


  • 0

#6 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 11 марта 2020 - 13:50

 

 

Другой элемент находится сверху и из-за этого не кликает?


Ага

 

А как лечить?) С помощью js не получается. Видно что наводится на элемент но действия не происходит.

 

Ну, наверно, как-то избавиться от этого элемента?


  • 0

#7 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 11 марта 2020 - 14:23

у веб-драйвера есть баг такой, что он думает что не может кликнуть

 

так что перед кликом просто скрольните страничку используя вызов джаваскрипта (гуглится)


  • 1

#8 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 11 марта 2020 - 14:39

да не в этом дело
 
1. Перед кликом ставите паузу секунд на 5 и ждете пройдет тест или нет
2. Если да, значит проблема в ожиданиях. Если нет, то элемент закрывает нужный вам
 
PS
 
<div class="modal-backdrop fade"></div>
 
Что-то такое я припоминаю
 
Вполне возможно, что тест работает слишком быстро и скорее всего при быстром клике реально будет такой элемент (он как такой темный фон), так что
 
словите ошибку в WebdriverException и поставьте опять же паузу на секунд 30 и попытайтесь как можно убрать этот темный фон

  • 1

#9 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 11 марта 2020 - 17:54

Там при клике появляется "окно" с текстом типа "Товар успешно добавлен", судя по стилю, там просто лежит див поверх всего. Или подождать, или кликнуть на него надо.


  • 1

#10 Serjant6993

Serjant6993

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 12 марта 2020 - 05:23

Всем большое спасибо за ответы, только щас заметил что скроулит он ниже чем нужно. Решил всё js:

public void clickWithFocus(WebElement webElement) {
   try{
            JavascriptExecutor executor = (JavascriptExecutor)driver;
            executor.executeScript("arguments[0].scrollIntoView(false);", webElement);
            executor.executeScript("arguments[0].focus();", webElement);
            webElement.click();
            executor.executeScript("arguments[0].blur();", webElement);

   }catch(Exception e){ e.toString();}
}

Так как спросить могу только у вас, тут же спрошу. При нажатии на "В корзину" вроде запускается ajax(мне кинули след. используемую документацию:https://api.jquery.com/jquery.ajax/ ). В итоге, чтобы закрыть появляющиеся форму я не жду его время выполнения, сразу закрываю её и всё работает( это устойчивая ситуация?).


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных