Перехвачен щелчок элемента Ошибка в селене - PullRequest
1 голос
/ 04 октября 2019

У меня проблема с селеном, тестирующим угловой сайт.

Я хочу нажать на поле названия паба на этом экране: enter image description here

КакВы можете видеть, что это боковое меню, которое открыто, и это HTML: enter image description here

Я пытаюсь подождать, чтобы элемент стал активным, и он прошел его. Это мой код:

public static void insertPublisherName(String publisherName)
    {
      //  BasePage.manuallyKeyboardPressing(Keys.ESCAPE);
      //  Logger.info("\n ******************* insert publisher name by Xpath: "+ COMPANY_NAME_XPATH +" *\n **************************************************\n");
      //  BasePage.inputValueByXpath(publisherName,COMPANY_NAME_XPATH);
        WebDriver driver2 = WebDriverMgr.getDriver();
        driver2.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        WebDriverWait wait = new WebDriverWait(driver2,58);
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@formcontrolname='publisher_name']")));

        WebElement element = driver2.findElement(By.xpath("//input[@formcontrolname='publisher_name']"));
        element.click();
        element.clear();
        element.sendKeys("123465");


    }

И это исключение:

:ERROR: element click intercepted: Element <input _ngcontent-xni-c24="" autocomplete="off" formcontrolname="publisher_name" nz-input="" placeholder="Enter Publisher Name" class="ant-input ng-untouched ng-pristine ng-valid" ng-reflect-name="publisher_name"> is not clickable at point (1560, 116). Other element would receive the click: <div class="ng-tns-c0-94 ant-notification-notice-with-icon">...</div>
  1. Я попытался также сделать селен, нажав кнопку Esc, и все же это ошибкаКак я могу преодолеть эту проблему?

  2. Как я могу знать, где щелкнуть этот элемент будет свободно щелкать, где он мне нужен, чтобы щелкнуть Это не проблема ожидания, так как при отладке яЖДИТЕ больше раз и все еще получите эту ошибку

С уважением

Ответы [ 3 ]

0 голосов
/ 04 октября 2019

Эта проблема возникает из-за следующей ситуации:

  1. Размер / элемент браузера отсутствует в порте просмотра
  2. Из-за проблемы ожидания
  3. На экране появляется всплывающее окно / предупреждение

Использовать следующее для размера браузера или порта просмотра:

browser.manage().window().setSize(1600, 1000);
browser.actions().mouseMove(element).click();

Примечание: Если вышеприведенное не работает, попробуйте также выполнить метод execute ()

browser.actions().mouseMove(element).click().perform();

Для вопроса ожидания:

browser.driver.sleep(3000)

Примечание. не является стандартным способом установки или реализации ожидания

Лучший способ:

WebDriverWait wait = new WebDriverWait(driver,60);
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath")));

Для всплывающего окна / оповещения:

Обработка окна или оповещения, а затем выполнение требуемой операции

Обработка окна:

browser.getAllWindowHandles().then(function(handles){
    var count=handles.length;
    var newWindow = handles[count-1];
    browser.switchTo().window(newWindow).then(function(){
        //do your stuff on the pop up window
    });
});

Обработка оповещения:

Принять:

browser.driver.switchTo().alert().accept();

Уволить:

browser.driver.switchTo().alert().dismiss();
0 голосов
/ 04 октября 2019

Иногда можно обойти заблокированные клики, отправив пробел или нажав клавишу ввода. Попробуйте:

element.sendKeys(Keys.SPACE);

или

element.sendKeys(Keys.ENTER);

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

0 голосов
/ 04 октября 2019

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

Возможно, вам придется подождать уведомления и отклонить его, прежде чем вы сможете нажать на свой ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...