Исключение перехваченного щелчка элемента - PullRequest
0 голосов
/ 23 апреля 2020

Я не могу выполнить операцию нажатия на кнопку входа в моем приложении.

Ниже приведен код HTML, и вы можете найти точный элемент кнопки в последней строке.

image

Пожалуйста, помогите мне с подходящим xpath выполнить операцию щелчка по кнопке входа.

Также найдите изображение пробного кода. Код

Xpath=”//button[contains(text(), 'Sign In (For Testing Purpose Only)')]”
(Or)

IWebElement Signin = driver.FindElement(By.Id("register-btn"));
            Signin.Click();
(Or)

IWebElement Signinbutton = driver.FindElement(By.XPath("//button[contains(text(), 'Sign In (For Testing Purpose Only)')]"));


            Actions action = new Actions(driver);

            action.MoveToElement(Signinbutton).Click().Perform();



The error which i get:
OpenQA.Selenium.ElementClickInterceptedException : element click intercepted: Element <button type="submit" id="register-btn" class="btn btn-block dl-button-primary dl-no-margin">...</button> is not clickable at point (758, 646). Other element would receive the click: <div class="footer navbar-fixed-bottom">...</div>

Ответы [ 3 ]

0 голосов
/ 23 апреля 2020

Попробуйте с javascript:

IWebElement Signinbutton = driver.FindElement(By.XPath("//button[contains(text(), 'Sign In (For Testing Purpose Only)')]"));
IJavaScriptExecutor javascriptExecutor = (IJavaScriptExecutor)driver;
executor.ExecuteScript("arguments[0].click();", Signinbutton );
0 голосов
/ 24 апреля 2020

Исключение, которое вы получаете, состоит в том, что кнопка, которую вы пытаетесь нажать, находится за этим элементом <div class="footer navbar-fixed-bottom">...</div>, который, как представляется, является нижним колонтитулом вашей страницы.

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

  1. Прокрутите до любого элемента под кнопкой входа (если есть). Вы можете использовать следующий код для этого:

    protected boolean scrollToElement(WebElement element) throws NoSuchElementException, StaleElementReferenceException { try { jsExecutor.executeScript("arguments[0].scrollIntoView(true);", element); return true; } catch (NoSuchElementException e) { logError("Element Not found exception when scrolling to element (JavaScript)", e); throw e; } catch (StaleElementReferenceException e) { logError("Stale element exeption when scrolling to element (JavaScript)", e); throw e; } }

  2. Закройте нижний колонтитул, если он предназначен для принять куки или что-то подобное, или вы также можете применить Custom CSS к этому элементу, чтобы скрыть его, и затем попытаться щелкнуть элемент.

String css= "display:none !important;" protected void addCustomCSS(WebElement webElement, String css) { registerCall(new Object() { }.getClass().getEnclosingMethod().getName()); try { String style = (String) jsExecutor.executeScript("arguments[0].getAttribute('style')", webElement); jsExecutor.executeScript("arguments[0].setAttribute('style', " + css + ")", webElement); stylesQueue.add(style); } catch (Exception e) { e.printStackTrace(); } }

0 голосов
/ 23 апреля 2020

Похоже, вам не хватает html, так как ошибка ссылается на нижний колонтитул.

Не фанат потоков спит, но попробуйте один и посмотрите, позволяет ли спящий поток загружать страницу. Мне интересно, если ваша страница все еще загружается и пытается нажать. Если сон работает, я бы удалил это и сделал бы переход к элементу или попробовал кликнуть java.

Thread.Sleep(1000);
driver.FindElement(By.XPath("//button[contains(text(), 'Sign In')]")).Click();
driver.FindElement(By.Id("register-btn")).Click();
...