使用appium在浏览器上运行selenium webdriver脚本,在模拟器上启动浏览器但抛出chromedriver异常

时间:2014-10-07 08:23:20

标签: c# selenium selenium-webdriver appium

代码无法在Android模拟器上执行,默认浏览器启动但在没有任何代码执行的情况下关闭,我在启动驱动程序时遇到了一个chromedriver异常,虽然我在android上启动默认浏览器。

我正在尝试运行用C#编写的selenium webdriver脚本,以便在Android浏览器上执行

以下是Appium Server上的日志

  

启动节点服务器

     

info:欢迎使用Appium v​​1.2.3(REV 90d746b373f55e8653a251d2ce8c62df37941919)

     

info:Appium REST http接口监听器在localhost.com:4720

上启动      

info:[debug]非默认服务器args:{"地址":" localhost.com"," port":4720," logNoColors":真," DEVICENAME":" AVD_for_Nexus_S"" platformName":" Android和#34;" platformVersion&#34 ;:" 18"" automationName":" Appium"" browserName":"浏览器"}

     

info:Console LogLevel:debug

     

信息:[37m - > [39m [37mPOST [39m [37m / wd / hub / session [39m [90m {" desiredCapabilities":{" browserName":& #34;浏览器""平台":" Android和#34;"版本":" 4.3"" platformName& #34;:" Android和#34;" DEVICENAME":" AVD_for_Nexus_S"}} [39米

     

info:[debug]提供了以下所需功能,但appium无法识别。它们将被传递给在此服务器上运行的任何其他服务。 :平台,版本

     

info:设置模式:直接进入Chromedriver

     

info:[debug]看起来我们想在Android上使用chrome

     

info:[debug]创建新的appium会话078f2cc6-b440-4ffa-9d97-45461a4af5da

     

info:[debug]准备会话设备

     

info:[debug]不检查app是否存在,因为我们假设它已经在设备上

     

info:[debug]检查adb是否存在

     

info:[debug]使用来自C:\ Android \ android-sdk \ platform-tools \ adb.exe的adb

     

info:检索设备

     

info:[debug]试图找到一个连接的Android设备

     

info:[debug]获取连接的设备......

     

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe"设备

     

info:[debug]已连接1个设备

     

info:找到设备模拟器-5554

     

info:[debug]将设备ID设置为emulator-5554

     

info:[debug]等待设备准备就绪并响应shell命令(超时= 5)

     

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe" -s emulator-5554等待设备

     

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe" -s emulator-5554 shell" echo' ready'"

     

info:[debug]启动logcat捕获

     

info:[debug]将解锁帮助应用程序推送到设备...

     

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe" -s emulator-5554安装" C:\ Appium \ node_modules \ appium \ build \ unlock_apk \ unlock_apk-debug.apk"

     

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe" -s emulator-5554 shell" dumpsys window"

     

info:[debug]将dumpsys输出写入C:\ Appium \ node_modules \ appium.dumpsys.log

     

info:[debug]屏幕已解锁,继续。

     

info:[debug]转发系统:4724到设备:4724

     

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe" -s emulator-5554 forward tcp:4724 tcp:4724

     

info:[debug]将appium bootstrap推送到设备......

     

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe" -s emulator-5554 push" C:\ Appium \ node_modules \ appium \ build \ android_bootstrap \ AppiumBootstrap.jar" /数据/本地的/ tmp /

     

info:启动应用

     

info:[debug]试图杀死所有' uiautomator'过程

     

info:[debug]使用' uiautomator'

获取所有流程      

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe" -s emulator-5554 shell" ps' uiautomator'"

     

info:[debug]找不到匹配的流程

     

info:[debug]运行bootstrap

     

info:[debug]产生:C:\ Android \ android-sdk \ platform-tools \ adb.exe -s emulator-5554 shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap

     

info:[debug] [90m [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:current = 1 [39m

     

info:[debug] [90m [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:id = UiAutomatorTestRunner [39m

     

info:[debug] [90m [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:class = io.appium.android.bootstrap.Bootstrap [39m

     

info:[debug] [90m [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:stream = [39m

     

info:[debug] [90m [UIAUTOMATOR STDOUT] io.appium.android.bootstrap.Bootstrap:[39m

     

info:[debug] [90m [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:numtests = 1 [39m

     

info:[debug] [90m [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:test = testRunServer [39m

     

info:[debug] [90m [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE:1 [39m

     

info:[debug] [BOOTSTRAP] [debug]在端口4724上打开套接字

     

info:[debug] [BOOTSTRAP] [debug] Appium Socket Server Ready

     

info:[debug] [BOOTSTRAP] [debug]加载json ...

     

info:[debug]将命令推送到appium工作队列:[" getDataDir",{}]

     

info:[debug] [BOOTSTRAP] [debug]已注册的崩溃观察者。

     

info:[debug] [BOOTSTRAP] [debug]连接客户端

     

info:[debug] [BOOTSTRAP] [debug]从客户端获取数据:{" cmd":" action"," action":&#34 ; getDataDir"" PARAMS":{}}

     

info:[debug] [BOOTSTRAP] [debug]获得类型为ACTION的命令

     

info:[debug] [BOOTSTRAP] [debug]得到命令动作:getDataDir

     

info:[debug] dataDir设置为:/ data

     

info:[debug]创建Chrome会话

     

info:[debug]将chromedriver二进制文件设置为:C:\ Appium \ node_modules \ appium \ build \ chromedriver \ windows \ chromedriver.exe

     

info:[debug]确保Chromedriver存在

     

info:[debug] [BOOTSTRAP] [debug]返回结果:{" value":" / data"," status":0}

     

info:[debug]杀死任何旧的chromedrivers,运行:FOR / F" usebackq tokens = 5" (netstat -nao ^| findstr /R /C:"9515 ")中的%a(FOR / F" usebackq"(TASKLIST /FI "PID eq %a" ^| findstr /I chromedriver.exe)中的%b)(IF NOT%b =="" TASKKILL / F / PID%b))

     

info:[debug]似乎没有旧的chromedrivers存在

     

info:[debug]产生chromedriver:C:\ Appium \ node_modules \ appium \ build \ chromedriver \ windows \ chromedriver.exe

     

info:[debug] [CHROMEDRIVER]在9515端口启动ChromeDriver(v2.10.267521)

     

只允许本地连接。

     

info:[debug]使用opts发出http请求:{" url":" http://localhost.com:9515/wd/hub/session","方法":&#34 ; POST"" JSON" {"的sessionId":空," desiredCapabilities" {" chromeOptions" {&#34 ; androidPackage":" com.android.browser"" androidActivity":" com.android.browser.BrowserActivity"" androidDeviceSerial&#34 ;:"模拟器-5554"}}}}

     

info:[debug] [CHROMEDRIVER STDERR] [0.008] [严重]:无法将套接字绑定到localhost.com:9515

     

info:[debug] [CHROMEDRIVER]端口不可用。退出...

     

info:[debug] Chromedriver退出代码1

     

info:[debug]获取连接的设备......

     

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe" -s emulator-5554设备

     

info:[debug]已连接1个设备

     

info:[debug]执行:" C:\ Android \ android-sdk \ platform-tools \ adb.exe" -s emulator-5554 shell" am force-stop com.android.browser"

     

info:[debug]停止logcat捕获

     

info:[debug] Logcat以代码null终止,信号SIGTERM

     

info:[debug]清理appium会话

     

错误:Chromedriver创建会话无效。状态为200,正文为{" sessionId":" 3cf07c143b1eb3020cd100b2d72cb5c9"," status":100," value":{"消息":" chrome无法访问\ n(驱动程序信息:chromedriver = 2.10.267521,platform = Windows NT 6.1 SP1 x86)"}}

     

info:[debug]清理appium会话

     

错误:无法启动Appium会话,错误是:错误:没有从Chromedriver获取会话重定向

     

info:[debug]错误:未从Chromedriver

获取会话重定向
at null.<anonymous
     

(C:\ Appium \ node_modules \ appium \ lib中\设备\机器人\ chromedriver.js:220:12)

at Request._callback (C:\Appium\node_modules\appium\lib\devices\common.js:116:5)

at Request.self.callback (C:\Appium\node_modules\appium\node_modules\request\request.js:121:22)

at Request.EventEmitter.emit (events.js:98:17)

at Request.<anonymous
     

(C:\ Appium \ node_modules \ appium \ node_modules \请求\ request.js:985:14)

at Request.EventEmitter.emit (events.js:117:20)

at IncomingMessage.<anonymous
     

(C:\ Appium \ node_modules \ appium \ node_modules \请求\ request.js:936:12)

at IncomingMessage.EventEmitter.emit (events.js:117:20)

at _stream_readable.js:920:16

at process._tickDomainCallback (node.js:459:13)
     

info:[debug]响应客户并出现错误:{&#34; status&#34;:33,&#34; value&#34;:{&#34; message&#34;:&#34; A无法创建新会话。 (原始错误:没有从Chromedriver获得会话重定向)&#34;,&#34; origValue&#34;:&#34;没有从Chromedriver&#34;},&#34; sessionId&#34;获得会话重定向日期null}

     信息:[37m&lt; - POST / wd / hub / session [39m [31m500 [39m [90m 108684.117 ms - 214 [39m [90m [39m]

C#Selenium代码段:

        IWebDriver driver;
        TimeSpan timeSpan = new TimeSpan(0, 0, 300);
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.SetCapability("automationName", "Appium");
        capabilities.SetCapability(CapabilityType.BrowserName, "Browser");
        capabilities.SetCapability(CapabilityType.Platform, "Android");
        capabilities.SetCapability(CapabilityType.Version, "4.3");
        capabilities.SetCapability("platformName", "Android");
        capabilities.SetCapability("deviceName", "AVD_for_Nexus_S");
        driver = new RemoteWebDriver(new Uri("http://localhost.com:4720/wd/hub"), capabilities, timeSpan);
        driver.Navigate().GoToUrl("about:blank");

2 个答案:

答案 0 :(得分:0)

嘿,你能尝试使用我使用的这些功能吗? 在我的模拟器上完美运行并在android浏览器上运行测试

    capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser");
    capabilities.setCapability(MobileCapabilityType.PLATFORM, "Android");
    capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
    capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,"Android Emulator");
    capabilities.setCapability(MobileCapabilityType.VERSION, "4.4.2");

干杯。

答案 1 :(得分:0)

检查Chrome是否已安装在您的模拟器上。它需要在chrome上运行。在论坛中查看如何在模拟器上安装chrome