Невозможно нажать кнопку с помощью Selenium

#java #selenium #selenium-webdriver #web-applications #automation

#java #селен #selenium-webdriver #веб-приложения #автоматизация

Вопрос:

Я новичок в selenium, и я наткнулся на веб-страницу, где я хотел нажать кнопку, которая вложена внутрь с другими тегами,

HTML

 <div ng-show="hasAuthenticated amp;amp;amp;amp; !accessingInEU" class="account-buttons ng-isolate-scope signed-in" ng-class="{ 'signed-in': loggedIn }" style="">
   <!-- ngIf: loggedIn -->
   <authenticated-button ng-if="loggedIn" class="ng-scope ng-isolate-scope" style="">
      <icon-button icon-class="authenticated icon-account-male" on-click="authenticatedButtonCtrl.showAccountSettings()" class="ng-isolate-scope">
         <button class="icon-container icon-button ng-binding" ng-click="onClick()" tabindex="0">
            <span aria-hidden="true" ng-class="iconClass" class="authenticated icon-account-male" />
         </button>
      </icon-button>
   </authenticated-button>
</div>  

Это фрагменты кода, которые я пробовал,

Примеры используемых кодов

 WebDriverWait wait = new WebDriverWait(driver, 30);
boolean invisiable = wait.until(ExpectedConditions
        .invisibilityOfElementLocated(By.cssSelector(".icon-container.icon-button.ng-binding")));
if (invisiable) {
    WebElement ele = driver.findElement(By.cssSelector(".icon-container.icon-button.ng-binding"));
    ele.click();
}
  

Когда я попробовал приведенный выше код, возникает приведенное ниже исключение

Исключение в потоке «main» org.openqa.selenium.Исключение ElementNotInteractableException: элемент не взаимодействует

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

 driver.findElement(By.xpath("//authenticated-button//icon-button//button[contains(@class,'icon-container icon-button ng-binding')]")).click();
  

Может кто-нибудь помочь мне решить эту проблему?

Заранее спасибо,

Комментарии:

1. Попробуйте нажать на значок-кнопку вместо кнопки и скажите мне, работает ли это.

2. Я тоже пробовал это. Но все та же проблема сохраняется..

3. Можете ли вы дать мне URL страницы, чтобы я мог ее протестировать, или вы хотите сохранить ее в тайне?

4. Он называется «Mapquest.com «… После того, как вы вошли в систему, я пытаюсь щелкнуть значок пользователя

5. Я вошел в систему, но не вижу значка пользователя, о котором вы говорите…

Ответ №1:

Вы ждете, пока элемент станет невидимым, а затем пытаетесь щелкнуть по нему. На данный момент он недоступен для взаимодействия.

Попробуйте вместо этого дождаться, пока элемент станет интерактивным, а затем щелкнуть его:

 WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions
        .elementToBeClickable(By.cssSelector(".icon-container.icon-button.ng-binding"))).click();
  

Комментарии:

1. Я пробовал ваше решение, и это приводит к исключению TimeoutException..

Ответ №2:

Попробуйте это:

 JavascriptExecutor executor = (JavascriptExecutor)driver;
                executor.executeScript("arguments[0].click();", ele);
  

Вместо метода Selenium click ()

Если это не сработает, попробуйте использовать класс Action

 new Actions(driver).moveToElement(ele).click().perform();
  

Если это тоже не сработает, мы рассмотрим этот элемент глубже.