我有一个项目,其中我有两种类型的测试,一次需要WebDriver和其他需要自定义队列依赖项。当使用黄瓜时,它不可能有两个单独的Spring配置,因为如果Step类的注释不同,它不允许你运行测试。因此,我决定在我自动装配的所有Beans上使用Lazy注释,以便它们只在需要时进行实例化。
这似乎在WebDriver实例上将JavascriptExecuter强制转换为其代理而不是WebDriver的真实实例时会产生问题。它抱怨它无法将一个com.sun.proxy。$ Proxy26转换为JavascriptExecuter。
在使用Actions类时尝试将WebDriver强制转换为HasInputDevices接口时也会出现这种情况。
当WebDriver被强制转换为接口时,似乎正在发生这种情况。
有没有人遇到过这个问题,是否有可能懒散地实例化WebDriver对象并按照我们的意愿进行投射。
P.S。我不能将测试框架分成两个,因为一个项目依赖于另一个项目。
谢谢你, 约翰
答案 0 :(得分:0)
我必须使用以下内容从代理中取回对象,最初发布在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;
}