无法使用硒单击按钮

时间:2020-10-05 13:02:34

标签: java selenium selenium-webdriver web-applications automation

我是硒的新手,遇到了一个网页,我想单击一个嵌套在其他标签内的按钮,

HTML

<div ng-show="hasAuthenticated &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();

有人可以指导我解决这个问题吗?

预先感谢

2 个答案:

答案 0 :(得分:0)

您正在等待该元素不可见,然后尝试单击它。目前无法交互。

请尝试等待元素可单击,然后单击它:

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

答案 1 :(得分:0)

尝试一下:

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

代替Selenium的click()方法

如果它不起作用,请尝试使用Action类

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

如果它也不起作用,那么我们将深入研究有问题的元素。