我是硒的新手,遇到了一个网页,我想单击一个嵌套在其他标签内的按钮,
HTML
<div ng-show="hasAuthenticated && !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();
有人可以指导我解决这个问题吗?
预先感谢
答案 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();
如果它也不起作用,那么我们将深入研究有问题的元素。