2

我正在尝试使用 Jenkins 在 VM 上使用 IEDriverServer 32 位启动 IE10。

当我使用 IEDriverServer 32 位在 VM 本身上运行它时,它工作正常。如果我使用 IEDriverServer 64bit 并从 Jenkins 调用它,它也可以正常工作。但是当我使用 IEDriverServer 32bit 并从 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 Explorer\ielowutil.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 位驱动程序版本。任何帮助将不胜感激。

乔斯

4

5 回答 5

1

如果 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

或者您可以添加 try / catch 并记录更有意义的消息。

于 2017-01-06T21:56:55.080 回答
1

我们的测试执行是通过 ssh 从我们的构建系统触发的

例如

ssh Administrator@some.host.com "export JAVA_HOME=\"C:/Program Files/Java/jre1.8.0_45\"; cd c:/testing; mvn -PrunSystemTests -Dsys.testsuite=SanitySuite.xml -DconfigFile=/ ie.properties -DsuiteName=SANITY 测试”

所有测试都失败了

... 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 Files/Java/jre1.8.0_45\"; export ProgramW6432=\"C:\Program Files\"; cd c:/testing; mvn - PrunSystemTests -Dsys.testsuite=SanitySuite.xml -DconfigFile=/ie.properties -DsuiteName=SANITY 测试”

于 2015-09-04T12:39:28.427 回答
0

这个问题有时也会发生在我身上。当它发生时,%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%文件夹似乎可以解决我的问题。

于 2014-01-20T16:27:27.957 回答
0

我有同样的问题。

我发现根本错误是,IEDriver 没有找到 Internet Explorer.exe。

我试过了:

  • 使用运行 jenkins 的用户登录 Jenkins 机器,并从 jenkins 工作区中的命令行手动执行测试。(在我的 Windows 机器上,转到 C:\Program Files (x86)\Jenkins\workspace\MYPROJECT\,执行 mvn integration-test):执行成功!

  • 将策略从PerScenarioWebDriverSteps更改为PerStoriesWebDriverSteps并在 jenkins 上运行:得到相同的错误。

  • 还检查了 IE ProtectionMode 设置。一切都好。

  • 通过 jenkins 使用 firefox 运行测试:工作正常。

  • 添加功能:capabilities.setCapability("ie.forceCreateProcessApi", true);并在詹金斯机器上添加了注册值:

Location: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
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 Explorer\ielowutil.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

你找到解决办法了吗?

于 2013-11-28T09:08:44.063 回答
0
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();

    }

}
于 2016-06-18T18:13:54.450 回答