#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();
Если это тоже не сработает, мы рассмотрим этот элемент глубже.