2016-05-25 5 views
0

Я переписываю несколько тестов для проверки проверки ограничений на входы электронной почты. Я пытаюсь проверить следующий JavaScript:Как проверить допустимость ограничений ввода в Geb?

document.getElementById('theEmailId').validity.typeMismatch 

Когда я тестирую это с использованием обычного старого JavaScript, все в порядке. Я получаю «true», что является ожидаемым ответом, когда адрес электронной почты недействителен. Когда я пытаюсь сделать это в Geb, я получаю всевозможные неприятности. Когда я пытаюсь

def isValid = js.exec("document.getElementById('theEmailAddress')") 

с утверждением в том, что IsValid == верно

Я получаю ошибку сравнения Спока со следующим выходом:

Condition not satisfied: 

isValid == true 
|  | 
null false 

Когда я пытаюсь

  def isValid = js.exec(theEmailAddress, 
      """ 
       return \$(this).validity; 
      """ 
    ) 

Я получаю ошибку java.lang.IllegalArgumentException в следующем отчете:

java.lang.IllegalArgumentException: Argument is of an illegal type: geb.content.TemplateDerivedPageContent 
at org.openqa.selenium.remote.internal.WebElementToJsonConverter.apply(WebElementToJsonConverter.java:81) 
at com.google.common.collect.Iterators$8.transform(Iterators.java:817) 
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48) 
at com.google.common.collect.Iterators.addAll(Iterators.java:365) 
at com.google.common.collect.Lists.newArrayList(Lists.java:162) 
at com.google.common.collect.Lists.newArrayList(Lists.java:146) 
at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:572) 
at geb.js.JavascriptInterface.execjs(JavascriptInterface.groovy:37) 
at geb.js.JavascriptInterface.exec(JavascriptInterface.groovy:67) 
at com.ag.functionaltest.crs.specs.LoginGebSpec.The customer can not register using an email without @(LoginGebSpec.groovy:33) 

Я в затруднении. Я пробовал browser.driver.executeScript, js.exec, js., Все возвращает null или ошибку. Любые указания на то, что я мог бы сделать, чтобы заставить это работать?

ответ

0

Решено! Вот что закончилось:

given: "The customer goes to login page" 
    to LoginPage 
    waitFor { LoginPage } 

    when: "The customer tries to register with an email without domain" 
    theEmailId.value("[email protected]") 

    and: "The customer clicks the continue button" 
    continueButton.click() 
    def isValid = js."window.document.getElementById('theEmailAddress').validity['typeMismatch']" 

    println isValid 

    then: "The customer should see this error" 

    assert isValid == true