Java Junit:仅在remotewebriver中运行测试时出现NoTouchElement异常

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”,“选择

我正在使用selenium grid与2个节点并行运行10个测试,仅在
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时,对性能的任何限制—无论您是使用显式等待在本地还是远程运行—都是建议的选项。你是说,你像我上面建议的那样尝试显式等待,但仍然收到异常?