2015-11-06 1 views
0

Я только что начал читать и пробовать некоторые примеры и его документацию (http://www.gebish.org/manual/current), и вам нужна помощь, чтобы понять, почему эти утверждения терпят неудачу. Моя первая попытка была с webapp, которая перенаправляется на наш IDP для входа в систему, и если это успешный логин, а затем перенаправляет вас на приватный контент webapp. Я был неудачным с этим примером и решил попробовать простейший пример (я также использовал Spok, модуль входа для повторного использования и определения Spec), я мог бы сделать, чтобы лучше понять, что происходит (я тоже пользователь Eclipse, и я, для этого сценария переключился на IntelliJ).Пример Simplest Geb fail assert

Утверждай 2 и 3 не удается, потому что пустое значение сравнивается против моего ожидаемого название:

package pages 

import geb.Browser 
import geb.Page 

class GooglePage extends Page { 
    static url = "http://www.google.com/" 

    static content = { 
     heading { $("title").text() } 
    } 

    static at = { 
     title == "Google"    //1 
     $('title').text() == "Google" //2 
     heading == "Google"   //3 
    } 
} 

Browser.drive{ 
    to GooglePage 
} 

Выход из // 2 утверждают неудачу:

Caught: Assertion failed: 

$('title').text() == "Google" 
     |   |  | 
     |   ""  false 
     [[[FirefoxDriver: firefox on WINDOWS (2c4f1f19-b4fc-4f1f-bb39-9e0e2459da58)] -> css selector: title]] 

Выход // 3 утверждают неудачу:

Caught: Assertion failed: 

heading == "Google"   //3 
|  | 
""  false 

Только первое утверждение верно, это встроенный атрибут заголовка. Согласно документации http://www.gebish.org/manual/current/#at-checker существует несколько способов получить значение названия, но, кажется, я использую его неправильно.

То же самое происходит с помощью chromeTest, firefoxTest или phantomJS или выполняется из IntelliJ или gradlew через командную строку). Я перечитал некоторые части документации, но чем больше я читаю, тем меньше я понимаю.

Что я пропущу или не хватает?

Спасибо.

ответ

0

Вы можете получить информацию только по объекту title объекта Page, который вы делаете в //1. Вы не можете выбрать элемент <title> с помощью селекторов $(), и это ограничение WebDriver - вот почему WebDriver.getTitle() есть, и Page.getTitle() делегирует ему (согласно его javadoc).

Не могли бы вы указать мне, какая именно часть http://www.gebish.org/manual/current/#at-checker заставила вас поверить, что существует несколько способов получить титул? Я лично не думаю, что секция делает такое заявление, но если это так, мы должны это исправить.

+0

Спасибо за разъяснение! Я сказал неправильно: я имел в виду, что я смешал примеры, показанные в документации, это выбор элемента h1, ap, div и т. Д. Вы ничего не должны исправить, но, возможно, это будет полезно для некоторых учащихся Geb, таких как я видеть какие-либо советы при объяснении селекторов или свойств страницы. Я знаю, что на самом деле это не специфическое ограничение для geb, но поскольку он использует WebKit и предоставляет его методы, чтобы объект страницы не казался мне очевидным (для моего незнания WebKit), эти методы были там, потому что невозможно восстановить его значения другим способом. – exoddus

 Смежные вопросы

  • Нет связанных вопросов^_^