Как получить присутствие элемента в логическом типе в Selenium 3 (вместо isElementPresent)

Я пытаюсь научиться тестировать автоматизацию с помощью WebDriverJS-Mocha в NodeJS, руководствуясь страницей ниже, в которой сценарий кодируется как совместимый с Selenium 2(не совместимый с Selenium 3): https://watirmelon.blog/2015/10/28/getting-started-with-webdriverjs-mocha/

И я просто хочу знать, как получить присутствие элемента в логическом типе в Selenium 3, так как это isElementPresent в Selenium 2

Я использую два пакета npm:

npm install selenium-webdriver@3.4.0
npm install -g mocha

Я запускаю мой файл JS, как показано ниже:

mocha spec.js

Я попытался закодировать это как ниже:

driver.findElements(By.id('sampleID')).then(found => true, function(present) {
        driver.wait(until.elementLocated(By.id('sampleID')), 3000);
        assert.equal(present, true, "Quote container not displayed");
    });

2 ответа

Вы можете достичь этого с помощью метода ниже...

public boolean checkForPresenceOfElementByXpath(String xpath){
    try{
        (new WebDriverWait(driver, 5)).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpath)));
        //driver.findElement(By.xpath(xpath));
        return true;
    }catch(Exception e){
        return false;
    }
}

Кажется, вы должны обернуть findElements ВНУТРИ ожидания, а не оборачивайте ожидание внутри findElements. Сначала вы ждете, пока первый элемент не будет найден, а затем вы найдете все элементы.

Однако я также думаю, что вы можете сделать это с elementLocated само собой.

Вместо:

driver.findElements(By.id('sampleID')).then(function(present) {
    driver.wait(until.elementLocated(By.id('sampleID')), 3000);
    assert.equal(present, true, "Quote container not displayed");
});

Просто делать

driver.wait(until.elementLocated(By.css('#sampleID')), 3000).then(function(present){
    assert.equal(present, true, "Quote container not displayed");
});

Если это не делает то, что вы хотите, и вам нужен findELements, сначала подождите, а затем делайте все, что вы хотите с findElements.

driver.wait(until.elementLocated(By.css('#sampleID')), 3000);
driver.findElements(By.css('#sampleID')).then(function(els){
    assert.equal(present, true, "Quote container not displayed");
});
Другие вопросы по тегам