Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Thucydides + WebDriver findElement не выбрасывает NoSuchElementException в случае отсутствия оного


(olegop) #1

 

public class SomePagePage extends PageObject {
    public SomePagePage(WebDriver driver) {
        super(driver);
    }

    public void checkClassic() {
        try {
            WebDriver driver = getDriver();
            driver.findElement(By.xpath(XPathStrings.xpathOrderConformation));
        } catch (NoSuchElementException e) {
            assertTrue("Отсутствует подтверждение успешно созданного распоряжения", false);
        }
    }

}

Собственно, когда дело доходит до выполнения данного метода, скрипт findElement чего-то ожидает и не выбрасывает Exeption в случае отсутствия веб-элемента, искомого по заданному XPath

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

Не помогает, не хотелось бы из-за этого усыплять поток. 

 


(gausner) #2

У меня Ваш код работает. Если  id-шника нет на странице, то тест фэйлится и эксепшен выскакивает.

 

public void checkClassic() {
try {
            WebDriver driver = getDriver();
            driver.findElement(By.xpath(".//*[@id='any_id']"));
        } catch (NoSuchElementException e) {
            Assert.assertTrue("Отсутствует подтверждение успешно созданного распоряжения", false);
        }
    }
 
}
 
Откуда и как вызываете этот метод checkClassic()?
 
И кстати можно искать элементы в аннотациях типа: 
 
@FindBy(xpath=".//*[@id='any_id']")
    private WebElement logoutButton;

 

Там есть масса полезных методов как дожидаться появления элементов на странице и так далее.


(olegop) #3

Спасибо за ответ! Не стал разбираться с сабжем, понял что какой-то трабл в зависимостях библиотек (проект был передан по наследству), просто создал сусидидес проект с easy-b с нуля и перенес написанные для него тесты.

Все, заработало. 

Для решения сабжа необходимо анализировать польностью сборку, если есть желание, могу посветить главным pom.xml.