0

J'ai un projet dans lequel j'ai deux types de test, une fois nécessitant WebDriver et d'autres nécessitant une dépendance de file d'attente personnalisée. Lorsque vous utilisez le concombre, il n'est pas possible d'avoir deux configurations Spring distinctes car cela ne vous permet pas d'exécuter le test si les classes Annotation on Step sont différentes. Par conséquent, j'ai décidé d'utiliser les annotations Lazy sur tous les Beans que je autowire afin qu'ils ne soient instanciés que lorsque cela est nécessaire.Spring DI - Concombre JVM - Instanciation paresseuse

Cela semble créer un problème partout où j'ai un casting JavascriptExecuter sur l'instance WebDriver en tant que proxy et non une véritable instance de WebDriver. Il se plaint qu'il ne peut pas lancer un com.sun.proxy. $ Proxy26 à JavascriptExecuter. Cela se voit également lorsque vous tentez de transformer l'interface WebDriver en interface HasInputDevices lors de l'utilisation de la classe Actions.

Il semble que cela se produise lorsqu'un WebDriver est casté dans une interface.

Est-ce que quelqu'un est tombé dessus et est-il possible d'instancier paresseusement l'objet WebDriver et de le lancer tel que nous le désirons.

P.S. Je ne peux pas casser le cadre de test en deux car il y a une dépendance d'un projet sur l'autre.

Merci, John

Répondre

0

je devais utiliser ce qui suit pour obtenir l'objet de retour de proxy, posté sur Casting a Spring's Proxy object to the actual runtime class

private T getTargetObject(Object proxy, Class targetClass) throws Exception { 
    while((AopUtils.isJdkDynamicProxy(proxy))) { 
     return (T) getTargetObject(((Advised)proxy).getTargetSource().getTarget(), targetClass); 
     } 
     return (T) proxy; 
}