Java Junit:仅在remotewebriver中运行测试时出现NoTouchElement异常
我正在使用selenium grid与2个节点并行运行10个测试,仅在Java Junit:仅在remotewebriver中运行测试时出现NoTouchElement异常,java,selenium,selenium-webdriver,junit4,selenium-grid,Java,Selenium,Selenium Webdriver,Junit4,Selenium Grid,我正在使用selenium grid与2个节点并行运行10个测试,仅在Remotewebdriver中获得了一个NoTouchElementException,但在普通firefox驱动程序中同样可以正常工作 我定义了自己的threadpool executor类,它一次包含两个线程,每个线程使用JUnitCoreAPI启动自己的Junit测试 以下是我收到的例外情况 org.openqa.selenium.NoSuchElementException:无法定位元素:{“方法”:“id”,“选择
Remotewebdriver
中获得了一个NoTouchElementException
,但在普通firefox驱动程序中同样可以正常工作
我定义了自己的threadpool executor类,它一次包含两个线程,每个线程使用JUnitCoreAPI启动自己的Junit测试
以下是我收到的例外情况
org.openqa.selenium.NoSuchElementException:无法定位元素:{“方法”:“id”,“选择器”:“登录元素”}
命令持续时间或超时:1.28秒
构建信息:版本:“2.35.0”,修订版:“c916b9d”,时间:“2013-08-12 15:42:01”
系统信息:os.name:'Windows 7',os.arch:'x86',os.version:'6.1',java.version:'1.6.0_24'
会话ID:5c94133a-5586-449c-b7f6-018bbd79a6d7
驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver
功能[{platform=XP,acceptSslCerts=true,javascriptEnabled=true,browserName=firefox,rotata
ble=false,locationContextEnabled=true,version=23.0.1,CSSSelectorEnabled=true,databaseEnabled=tr
ue,handlesAlerts=true,browserConnectionEnabled=true,nativeEvents=true,WebStorage Enabled=true,ap
ApplicationCacheEnabled=true,takesScreenshot=true}]
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorIm
pl.java:27)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于org.openqa.selenium.remote.ErrorHandler.CreateTrowable(ErrorHandler.java:191)
位于org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
位于org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:307)
位于org.openqa.selenium.remote.RemoteWebDriver.findElementByLinkText(RemoteWebDriver.java:356
)
位于org.openqa.selenium.By$ByLinkText.findelelement(By.java:241)
位于org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:299)
在sun.reflect.GeneratedMethodAccessor24.invoke处(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.jav
a:101)
在$Proxy1.findElement处(未知来源)
位于org.openqa.selenium.support.events.EventFiringWebDriver.findelelement(EventFiringWebDriver)。
爪哇:180)
位于org.openqa.selenium.remote.server.handler.FindElement.call(FindElement.java:47)
位于org.openqa.selenium.remote.server.handler.FindElement.call(FindElement.java:1)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
位于java.util.concurrent.FutureTask.run(FutureTask.java:138)
位于org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
运行(Thread.java:662)
还尝试了一个示例小测试,工作正常,没有任何异常,只有在运行我的应用程序时才会出现问题
请在此上提供您的输入您是否尝试等待元素?我建议您使用
WebDriverWait
WebDriverWait wait = new WebDriverWait(driver,120/*timeout in seconds*/);
WebElement login = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("login_element")));
//do stuff with login
感谢您的回复,这里的问题不是等待,当我通过一个普通的firefox驱动程序运行它时,它工作正常,但当我从RemoteWebdriver尝试它并并行运行测试时,不会发生同样的情况,因此我怀疑是否存在超时问题,或者,当我运行selenium tests parallelyNo时,对性能的任何限制—无论您是使用显式等待在本地还是远程运行—都是建议的选项。你是说,你像我上面建议的那样尝试显式等待,但仍然收到异常?