Вчера я задаю вопрос, как поступить: «Элемент не активен в момент нажатия - другой элемент получит исключение« щелчок »в Selenium WebDriver.
Я получаю несколько ответов с этим решением:
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(...));
Да, это имеет смысл, но на практике это не работает.
Ниже приведен фрагмент моего кода:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView();", categoryItem);
Thread.sleep(1000);
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(categoryItem));
categoryItem.click();
List<WebElement> selects = driver.findElements(By.tagName("select"));
Select ticketsSelect = new Select(selects.get(3));
ticketsSelect.selectByValue("2");
By addToBasket = By.xpath("//div[contains(text(),'Add to Basket')]");
Thread.sleep(1000);
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(addToBasket));
driver.findElement(addToBasket).click();
Мне приходилось помещать 1 секунду в спящий режим перед каждым ожиданием, пока элемент не станет активным, потому что без этого он по-прежнему вызывает исключение, что другой элемент получит щелчок.
У меня вопрос, почему WebDriver щелкает этот элемент, если элемент не активен?