方法#1:每次测试前登录:
优点:
缺点:
APRROACH#2:登录一次并运行所有测试:
优点:
缺点:
尽管这两种方法各有利弊,但我仍然不确定哪种方法是最好的。在每次测试之前作为单独的会话登录真的很浪费资源吗?不涉及数据库连接。我发现 APPROACH#1 的唯一潜在问题是,由于每个测试都是 Java 进程,因此有可能因过多的并发 Java 进程而导致系统过载。
在将FF9更新为FF10之后,使用Java绑定在Windows 7中使用版本2.15.0和Firefox9时,我遇到了此错误.我尝试在网上建议禁用本机事件,但没有运气.在线搜索了更多解决方案后,我将WebDriver更新到2.17.0版.问题已得到解决,我有时也没有遇到同样的问题.我再次升级到最新版本的WebDriver,2.19.0,问题解决了.现在我在将FF10更新到11之后面临同样的问题.我升级到2.20,但问题占了上风.我禁用了原生事件如下,但我仍然得到错误.
使用Java:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("webdriver_enable_native_events", false);
driver = new FirefoxDriver(profile);
Run Code Online (Sandbox Code Playgroud)
Stacktrace(当我尝试移动鼠标悬停在元素上时):
org.openqa.selenium.InvalidElementStateException: Cannot perform native interaction: Could not load native events component.
Command duration or timeout: 30.07 seconds
Build info: version: '2.20.0', revision: '16008', time: '2012-02-28 15:00:40'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_31'
Driver info: driver.version: RemoteWebDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java: 170)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java: 123)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java: 438)
at org.openqa.selenium.remote.ExecuteMethod.execute(ExecuteMethod.java: 47) …Run Code Online (Sandbox Code Playgroud)