org.openqa.selenium.TimeoutException:预期条件失败:等待元素可单击

问题描述

我创建了用于单击页面上所有菜单项和子项的测试。单击第二项的子项失败: org.openqa.selenium.ElementClickInterceptedException:元素单击被拦截:元素<a class="side-bar-third__link" href="/radiology/kt/golova/">...</a>在点(456,824)不可单击。其他元素将获得点击:<div class="monitoring_link">...</div>


    @Test
    public void clickAllMenuItemsTest() {
        System.setProperty("webdriver.chrome.driver","libs/chromedriver/chromedriver.exe");

        List<String> links = new ArrayList<>();

        driver = new ChromeDriver();
        driver.get("https://www.invitro.ru/radiology/");
        JavascriptExecutor jsExecutor = driver;
        WebDriverWait wait = new WebDriverWait(driver,10);

        final By locator = By.cssSelector("a.side-bar-second__link");
        final By locatorActiveItem = By.cssSelector(".side-bar-second__items.side-bar__items--active");
        final By locatorSubItems = By.cssSelector(" a.side-bar-third__link");
        wait.until(ExpectedConditions.elementToBeClickable(locator));
        int numberOfElementsFound = getNumberOfElementsFound(locator);

        for (int pos = 0; pos < numberOfElementsFound; pos++) {
            wait.until(ExpectedConditions.elementToBeClickable(locator));

            final WebElement elementClickable = getElementWithIndex(locator,pos);
            jsExecutor.executeScript("arguments[0].scrollIntoView(true);",elementClickable);
            elementClickable.click();

            wait.until(ExpectedConditions.elementToBeClickable(locatorActiveItem));

            int numberOfSubElementsFound = getNumberOfElementsFound(locatorActiveItem,locatorSubItems);
            for (int subPos = 0; subPos < numberOfSubElementsFound; subPos++) {
                wait.until(ExpectedConditions.elementToBeClickable(locatorSubItems));
                final WebElement subElementClickable = driver.findElement(locatorActiveItem).findElements(locatorSubItems).get(subPos);
                jsExecutor.executeScript("arguments[0].scrollIntoView(true);",subElementClickable);


                //fails here:
                subElementClickable.click();
            }
        }
        driver.quit();
    }

    private WebElement getElementWithIndex(By locatorActiveItem,By locatorSubItems,int index) {
        return driver.findElement(locatorActiveItem).findElements(locatorSubItems).get(index);
    }

    private int getNumberOfElementsFound(By locatorActiveItem,By locatorSubItems) {
        return driver.findElement(locatorActiveItem).findElements(locatorSubItems).size();
    }

    public int getNumberOfElementsFound(By by) {
        return driver.findElements(by).size();
    }

    public WebElement getElementWithIndex(By by,int index) {
        return driver.findElements(by).get(index);
    }

有什么问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)