我正在尝试使用 Jenkins 在 VM 上使用 IEDriverServer 32bit 启动 IE10。
当我使用 IEDriverServer 32 位在 VM 本身上运行它时,它工作正常。如果我使用 IEDriverServer 64 位并从 Jenkins 调用它,它也可以正常工作。但是当我使用 IEDriverServer 32 位并从 Jenkins 启动它时,它失败并显示以下错误:
Running tests.generated.LVATC01TG01_IE10_Test
I 2013-11-01 11:03:02:772 server.cc(53) Starting WebDriver server on port: '37042' on host: ''
D 2013-11-01 11:03:02:773 server.cc(104) Mongoose ACL is -0.0.0.0/0,+127.0.0.1
Started InternetExplorerDriver server (32-bit)
2.37.0.0
Listening on port 37042
Log level is set to DEBUG
D 2013-11-01 11:03:03:329 server.cc(239) Command: GET /status {}
D 2013-11-01 11:03:03:330 server.cc(308) Response: {"sessionId":"","status":0,"value":{"build":{"version":"2.37.0.0"},"os":{"arch":"x64","name":"windows","version":"6.1.7601"}}}
D 2013-11-01 11:03:03:513 server.cc(239) Command: POST /session {"desiredCapabilities":{"platform":"WINDOWS","ensureCleanSession":true,"browserName":"internet explorer","logLevel":"DEBUG","version":""}}
D 2013-11-01 11:03:03:514 IESession.cpp(43) Mutex acquired for session initalization
D 2013-11-01 11:03:03:520 IESession.cpp(105) Releasing session initialization mutex
D 2013-11-01 11:03:03:520 command.cc(33) Raw JSON command: { "command" : "newSession", "locator" : { }, "parameters" : {"desiredCapabilities":{"platform":"WINDOWS","ensureCleanSession":true,"browserName":"internet explorer","logLevel":"DEBUG","version":""}} }
W 2013-11-01 11:03:03:523 BrowserFactory.cpp(795) Couldn't find IE version for executable %ProgramFiles(x86)%Internet Explorerielowutil.exe, falling back to -1
D 2013-11-01 11:03:03:529 BrowserFactory.cpp(66) Ignoring Protected Mode Settings: 0
D 2013-11-01 11:03:03:529 BrowserFactory.cpp(69) Checking validity of Protected Mode settings.
D 2013-11-01 11:03:03:529 BrowserFactory.cpp(846) Detected IE version: -1, detected Windows version: 6
D 2013-11-01 11:03:03:531 BrowserFactory.cpp(72) Has Valid Protected Mode Settings: 1
D 2013-11-01 11:03:03:555 BrowserFactory.cpp(168) Starting IE using the IELaunchURL API
W 2013-11-01 11:03:03:578 BrowserFactory.cpp(173) -2147024894 [The system cannot find the file specified.]: Error using IELaunchURL to start IE
W 2013-11-01 11:03:03:578 IECommandExecutor.cpp(627) Unable to launch browser, received NULL process ID
W 2013-11-01 11:03:03:578 response.cc(69) Error response has status code 6 and message 'Unexpected error launching Internet Explorer. IELaunchURL() returned 80070002 for URL 'http://localhost:37042/'' message
W 2013-11-01 11:03:03:578 IECommandExecutor.cpp(516) Unable to get current browser
D 2013-11-01 11:03:03:583 IESession.cpp(146) Executor shutdown successful!
D 2013-11-01 11:03:03:583 IESession.cpp(154) Posting thread shutdown message
D 2013-11-01 11:03:03:583 IESession.cpp(157) Starting wait for thread completion
D 2013-11-01 11:03:03:583 IESession.cpp(160) Waiting for thread to end returned 4294967295
D 2013-11-01 11:03:03:583 server.cc(308) Response: {"sessionId":"47dfd98f-f9be-4b95-810d-4428c3f98af1","status":6,"value":{"message":"Unexpected error launching Internet Explorer. IELaunchURL() returned 80070002 for URL 'http://localhost:37042/'"}}
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(435) Shutdown message received
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(131) Entering IECommandExecutor::OnDestroy
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(133) Clearing managed element cache
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(135) Closing input manager
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(137) Closing proxy manager
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(139) Closing browser factory
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(141) Posting quit message
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(143) Leaving IECommandExecutor::OnDestroy
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(437) Returned from DestroyWindow()
D 2013-11-01 11:03:03:583 IECommandExecutor.cpp(446) Exited IECommandExecutor thread message loop
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.275 sec <<< FAILURE! - in tests.generated.LVATC01TG01_IE10_Test
lVA(tests.generated.LVATC01TG01_IE10_Test) Time elapsed: 2.089 sec <<< ERROR!
org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer. IELaunchURL() returned 80070002 for URL 'http://localhost:37042/' (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.37 seconds
Build info: version: '2.37.1', revision: 'a7c61cbd68657e133ae96672cf995890bad2ee42', time: '2013-10-21 09:08:07'
System info: host: 'win7ietest3', ip: '10.187.160.139', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_40'
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:151)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:201)
at org.openqa.selenium.ie.InternetExplorerDriver.run(InternetExplorerDriver.java:224)
at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:214)
at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:184)
at common.Common.startIE(Common.java:181)
at common.Common.startDriver(Common.java:95)
at tests.generated.LVATC01TG01_IE10_Test.setUp(LVATC01TG01_IE10_Test.java:25)
设置驱动程序的方法:
/**
* Setting up IE driver
*/
private static void startIE()
{
File file = new File(DRIVER_DIR + "IEDriverServer_Win32_2.37.0.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability("logLevel", "DEBUG");
driver = new InternetExplorerDriver(capabilities);
}
我已经四处寻找解决方案,但大多数解决方案都与在IE中正确设置保护模式有关(我有,因为64位驱动程序版本有效)。
由于已知问题(即发送密钥速度慢),我无法使用 64 位驱动程序版本。任何帮助将不胜感激。
乔斯
我们的测试执行是通过 ssh 从我们的构建系统触发的
例如
ssh Administrator@some.host.com "export JAVA_HOME=\"C:/Program 文件/Java/jre1.8.0_45\";光盘 C:/测试;mvn -PrunSystemTests -Dsys.testsuite=SanitySuite.xml -DconfigFile=/ie.properties -DsuiteName=SANITY test"
所有测试都失败,并显示
。org.openqa.selenium.remote.SessionNotFoundException: 启动 Internet Explorer 时出现意外错误。IELaunchURL() 为 URL "http://localhost:22087/"返回 HRESULT 80070002("系统找不到指定的文件")(警告:服务器未提供任何堆栈跟踪信息)...
通过在运行测试之前设置环境变量ProgramW6432解决了该问题
例如
ssh Administrator@some.host.com "export JAVA_HOME=\"C:/Program 文件/Java/jre1.8.0_45\";导出程序W6432=\"C:\程序文件";光盘 c:/测试;mvn -PrunSystemTests -Dsys.testsuite=SanitySuite.xml -DconfigFile=/ie.properties -DsuiteName=SANITY test"
如果 Appium 在 60 秒内未收到下一个命令,它将关闭。
[BaseDriver] Shutting down because we waited 60 seconds for a command
[debug] [AndroidDriver] Shutting down Android driver
就我而言,我的自动化循环了 60 多秒,让应用程序完成其任务,该任务具有网络依赖性。
您可以通过在功能中添加"newCommandTimeout"来避免这种情况,以增加超时持续时间,如下所示: capabilities.setCapability("newCommandTimeout", 90); //or seconds
或者,您可以添加尝试/捕获并记录更有意义的消息。
我有同样的问题。
我发现根本错误是,IEDriver找不到Internet Explorer.exe。
我试过了:
- 使用运行 Jenkins 的用户
登录 Jenkins 机器,并从 Jenkins 工作区中的命令行手动执行测试。(在我的Windows机器上,转到C:\Program Files (x86)\Jenkins\workspace\MYPROJECT\,执行mvn集成测试):执行有效!
将策略从 PerScenarioWebDriverSteps 更改为 PerStoriesWebDriverSteps 并在 jenkins 上运行:得到相同的错误。
还检查了IE保护模式设置。一切都还好。
通过 Jenkins 使用 Firefox 运行测试:工作正常。
添加的功能:
capabilities.setCapability("ie.forceCreateProcessApi", true);
并在 jenkins 机器上添加了注册值:
Location: HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMain Name: TabProcGrowth Type: REG_DWORD Value: 0 Value Type: Decimal
浏览器进程 ID 这次启动,但随后整个执行在此处挂起:
BrowserFactory.cpp(207) Starting IE using the CreateProcess API
BrowserFactory.cpp(221) IE starting command line is: 'C:Program Files (x86)Internet Explorerielowutil.exe http://localhost:9164/'.
BrowserFactory.cpp(122) IE launched successfully with process ID 5452
BrowserFactory.cpp(128) Process with ID 5452 is executing ielowutil.exe
BrowserFactory.cpp(282) Entering BrowserFactory::AttachToBrowser
你找到解决方案了吗?
这个问题有时也发生在我身上。当它发生时,在我的工作目录中创建了一个名为 %SystemDrive%
的神秘目录(实际上具有此名称,没有任何环境变量扩展)。供将来参考,此目录包含以下文件夹和文件:
* %SystemDrive%/
* ProgramData/
* Microsoft/
* Windows/
* Caches/
* {6AF0698E-D558-4F6E-9B3C-3716689AF493}.2.ver0x0000000000000001.db
* {DDF571F2-BE98-426D-8288-1A9A39C3FDA2}.2.ver0x0000000000000001.db
* cversions.2.db
删除此%SystemDrive%
文件夹似乎为我解决了问题。
package appium;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.*;
import org.testng.*;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileBrowserType;
import io.appium.java_client.remote.MobileCapabilityType;
public class My {
public static void main(String[] args) throws MalformedURLException {
AndroidDriver driver;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "Nexus 5");
capabilities.setCapability("platformName", "android");
capabilities.setCapability("platformVersion", "5.0.1");
capabilities.setCapability("appPackage","com.android.calculator2");
capabilities.setCapability("appActivity","com.android.calculator2.Calculator");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
driver.quit();
}
}