Элемент не активен в данный момент - другой элемент получит щелчок - PullRequest
0 голосов
/ 16 мая 2018

У меня есть элемент на веб-сайте, который выглядит следующим образом

        <div id="wrapperCategory" class="categoryItemWrapper">
        <div class="panel panel-default panel-categoryItem text-center categoryItem disabledItem" ng-class="category.CategoryStyleClass" ng-click="setselectedProduct(productIndex,product,category); setselectedProductAmount(null);" title="Category">
            <div class="panel-heading">
                Category
            </div>
            <div class="panel-body">
                Price
            </div>
            <div class="panel-footer availability" ng-class="category.AvailabilityStyleClass">
                <span ng-bind-html="category.AvailabilityText">Avail</span>
            </div>
        </div>
    </div>

Мне нужно нажать на него, чтобы двигаться вперед.Если я вручную нажимаю на каждый из этих элементов или веб-сайт пролета идет вперед, но SeleniumWebdriver не может щелкнуть ни один из них.Я пробовал нажимать на span и div с событием ng-click buch каждый раз, когда я получаю сообщение об ошибке:

Exception in thread "main" org.openqa.selenium.WebDriverException: Element <div class="panel panel-default panel-categoryItem text-center categoryItem" ng-class="category.CategoryStyleClass" ng-click="setselectedProduct(productIndex,product,category); setselectedProductAmount(null);" title="Category"></div> is not clickable at point (619.2666625976562, 474.23333740234375). Other element would receive the click: <div style="top: 0;left: 0;bottom: 0;right: 0;position: fixed;pointer-events: auto !important;z-index: 10000;" id="cover-1526454140024"></div>

Я не получаю его.Могу ли я каким-то образом проверить, какой элемент кликабелен, а какой перекрывает этот, который я хочу щелкнуть (я не вижу ни одного div с id = "cover-1526454140024" в коде веб-сайта)?

Обновлено: К сожалению, это все еще не работает после ваших решений.То же исключение при попытке щелкнуть.

//    try {
//      Thread.sleep(1000);
//    } catch (InterruptedException e) {
//      e.printStackTrace();
//    }
    JavascriptExecutor js = (JavascriptExecutor) Mundial.driver;
    js.executeScript("arguments[0].scrollIntoView();", categoryItem);

    new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(categoryItem));
    categoryItem.click();
    List<WebElement> selects = driver.findElements(By.tagName("select"));
    Select ticketsToSelect = new Select(selects.get(3));
    ticketsToSelect.selectByValue("number:2");

Это работает только в том случае, когда я перехожу в спящий режим и прокручиваю вручную.Я не понимаю.

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Один из способов - команды ExpectedConditions

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("Yourid")));

Дополнительные примеры можно найти по адресу http://toolsqa.com/selenium-webdriver/wait-commands/

0 голосов
/ 16 мая 2018

Согласно вашему ответу:

Вам нужно будет прокрутить вниз , чтобы веб-элемент был доступен для вашего скрипта. Для этого вы можете использовать этот код:

public static void scrollDown(WebDriver driver, String YoffSet){
            JavascriptExecutor jse = (JavascriptExecutor)driver;
            jse.executeScript(YoffSet);
    }

здесь вы можете вызывать этот метод в любом месте вашего кода.

Затем вы можете использовать этот код для взаимодействия с веб-элементом:

WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("static ID")));  
element.click();
0 голосов
/ 16 мая 2018

У меня возникло много таких проблем, как говорит Анкур, используйте wait, прежде чем нажать

WebElement seems_unclickable = wait.until(ExpectedConditions.elementToBeClickable(By.id(...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...