2016-06-03 1 views
2

Я немного запутался в многословии, используемое для навигатора API здесь http://www.gebish.org/manual/current/api/geb/navigator/Navigator.htmlГеба с помощью Навигатора методы на пустых навигаторах

В particualr, я смущен метод .isDisplayed.

В документации к этапу указано: «Возвращает true, если отображается единственный элемент контекста или false для пустых навигаторов. Нельзя вызвать многопользовательские навигаторы».

Проблема в том, что я вызываю .isDisplayed() на пустой навигатор, он не возвращает false. Вместо этого он выдает эту ошибку:

table: geb.navigator.EmptyNavigator' is not present 

Линии она проваливает выглядит примерно так:

at SomePage //This page has a module element called "module" 
if(module.table.isDiplayed()){ // module has a navigtor element called table 
    //do stuff 
} 

Элемент таблицы в вопросе действительно несуществующий, так что элемент таблицы действительно пустой навигатор , но в соответствии с документацией это означает, что когда я вызываю .isDisplayed(), он должен возвращать false, но вместо этого он выдает вышеупомянутую ошибку.

это тот же случай при вызове методов имитационного навигатора, таких как .isEmpty() agai n, если элемент не найден на странице, я ожидал бы .isEmpty(), чтобы вернуть true при вызове из пустого элемента, но вместо этого он выдает исключение EmptyNavigator.

Что дает?

ответ

4

Это потому, что элемент таблицы на вашей странице является обязательным элементом (по умолчанию). Когда вы пытаетесь использовать требуемый элемент страницы, но селектор возвращает пустой навигатор, geb выкинет это исключение. Чтобы исправить это, вы хотите сказать ГЭБ, что модуль не требуется:

class Module{ 

    static content { 
    table(required: false) { /* selector here*/ } 
    } 
} 

Теперь, когда вы используете таблицу, вы получите пустой навигатор назад вместо исключения.

+0

Возможно, это было спасибо. Я все еще думаю, что документация немного неясна в этом. – switch201