2012-05-30 1 views
0

Я использую cuke4duke в проекте grails. Функции/поддержка/env.groovy имеетопределенный интерфейс реализации класса в groovy, но не может вызвать метод

import org.openqa.selenium.htmlunit.HtmlUnitDriver 
import org.openqa.selenium.JavascriptExecutor 
import com.gargoylesoftware.htmlunit.BrowserVersion 
import com.gargoylesoftware.htmlunit.ConfirmHandler 
import com.gargoylesoftware.htmlunit.Page 
...  
this.metaClass.mixin(cuke4duke.GroovyDsl) 
... 
public class ConfirmationHandler implements ConfirmHandler { 

    boolean handleConfirm(Page page, String message) { 
     called = true 
     if (text == null || text.length()==0) { 
     return answer 
     } 
     if (message.contains(text)) { 
     return answer 
     } 
     throw new RuntimeException("Expected '${text}' in confirmation message but got '${message}'")  
    } 
    public String text = null 
    public boolean answer = false 
    public boolean called = false 
} 
... 
Before() { 
... 
    browser = new HtmlUnitDriver(BrowserVersion.FIREFOX_3_6) 
    confirmation = new ConfirmationHandler() 
    browser.setConfirmHandler((ConfirmHandler) confirmation) // ERROR ! 
... 
} 

Кажется, класс получает правильно составлен, но заводной не могу назвать setConfirmHandler как он ожидает ConfirmHandler ... но класс прилагаемого объекта реализует интерфейс! Я проверил, что «экземпляр подтверждения ConfirmHandler» печатает true.

Примечание: пакет HtmlUnit написан на Java.

Любые идеи? (Это вершина трассировки стека)

[INFO] org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: Нет подписи метода: org.openqa.selenium.htmlunit. HtmlUnitDriver.setConfirmHandler() является применимо для типов аргументов: (ConfirmationHandler) значения: [ConfirmationHandler @ 6c08bae7] (NativeException)

ответ

0

Dont вам нужно сделать:

browser.getWebClient().setConfirmHandler(confirmation) 

Как я не вижу, что у HtmlUnitDriver есть метод setConfirmHandler ...

+0

Да, моя ошибка, я вызывал метод в неправильном классе. Теперь это работает. – carlosayam