Как получить присутствие элемента в логическом типе в 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");
});