【发布时间】:2014-08-28 21:01:46
【问题描述】:
我正在尝试通过 Appium 运行我的第一个测试并收到以下错误。
org.openqa.selenium.SessionNotCreatedException:无法创建新会话。 (原始错误:没有从 Chromedriver 获得会话重定向)(警告:服务器没有提供任何堆栈跟踪信息) 命令持续时间或超时:4.64 秒 构建信息:版本:'2.41.0',修订:'3192d8a',时间:'2014-03-27 17:17:32' os.name:'Windows 7',os.arch:'x86',os.version:'6.1',java.version:'1.7.0_51' 驱动程序信息:org.openqa.selenium.remote.RemoteWebDriverAppium 日志:
错误:调试:在 /wd/hub/session 发起的 Appium 请求
信息:看起来我们想要在 android 上使用 chrome
信息:创建新的 appium 会话 99ff77a0-86fa-4851-93ad-5375c95656e7
错误:调试:正在执行:“D:\****\adt-bundle-windows-x86-20140321\sdk\platform-tools\adb.exe”设备
信息:正在为会话准备设备
信息:不检查应用程序是否存在,因为我们假设它已经在设备上
信息:检查 adb 是否存在
信息:[ADB] 使用来自 D:\****\adt-bundle-windows- 的 adb x86-20140321\sdk\platform-tools\adb.exe
信息:尝试查找已连接的 android 设备
信息:[ADB] 正在获取连接的设备...
信息:[ADB] 1 个设备( s) 已连接
错误:调试:正在执行:“D:\****\adt-bundle-windows-x86-20140321\sdk\platform-tools\adb.exe”-s emulator-5554 wait-for-设备
信息:将设备 ID 设置为 emulator-5554
信息:[ADB] 等待设备准备好并响应 shell 命令(超时 = 5)
错误:调试:正在执行:“D: \****\adt-bu ndle-windows-x86-20140321\sdk\platform-tools\adb.exe" -s emulator-5554 shell "echo 'ready'"
信息:启动 logcat 捕获
错误:调试:将解锁帮助程序推送到设备...
错误:调试:执行:“D:\****\adt-bundle-windows-x86-20140321\sdk\platform-tools\adb.exe”-s emulator-5554 install “C :\Appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk"
错误:调试:执行:"D:\****\adt-bundle-windows-x86-20140321\sdk\platform- tools\adb.exe" -s emulator-5554 shell "dumpsys window"
信息:将 dumpsys 输出写入 C:\Appium\node_modules\appium\.dumpsys.log
错误:调试:屏幕已解锁,继续.
信息:创建 Chrome 会话
信息:确保 Chrome 驱动程序存在
信息:杀死所有旧的 chromedrivers,运行: FOR /F "usebackq tokens=5" %a in (`netstat -nao ^| findstr /R /C:"9515 "`) 做 (FOR /F "usebackq" %b in (`TASKLIST /FI "PID eq %a" ^| findstr /I chromedriver.exe`) 做 (IF NOT %b= ="" TASKKILL /F /PID %b))
信息:似乎不存在旧的 chromedrivers
信息:使用以下命令生成 chromedriver:C:\Appium\node_modules\appium\build\chromedriver\windows\chromedriver.exe
信息:[CHROMEDRIVER] 在端口 9515 上启动 ChromeDriver (v2.9.248315)
信息:使用 opts 发出 http 请求:{"url":"http://****:9515/wd/hub/ session","method":"POST","json":{"sessionId":null,"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.android.browser","androidActivity":"com .android.browser.BrowserActivity","androidDeviceSerial":"emulator-5554"}}}}
错误:调试:正在执行:“D:\****\adt-bundle-windows-x86-20140321\sdk \platform-tools\adb.exe" -s emulator-5554 设备
信息:[CHROMEDRIVER STDERR] [0.003][SEVERE]:无法将套接字绑定到 0.0.0.0:9515
信息:[CHROMEDRIVER] 端口无法使用。正在退出...
信息:Chrome 驱动程序退出并显示代码 1
信息:[ADB] 正在连接设备...
错误:错误:Chrome 驱动程序创建会话无效。状态为 200,正文为 {"sessionId":"ba9a494082776d6b4836da850072cbcb","status":13,"value":{"message":"unknown error: Device emulator-5554 is already in use\n (Driver info: chromedriver= 2.9.248315,platform=Windows NT 6.1 SP1 x86)"}}
信息:清理 appium 会话
错误:错误:无法启动 Appium 会话,错误是:错误:未从 Chromedriver 获得会话重定向
信息:错误:未从 Chromedriver
获得会话重定向为 null。 (C:\Appium\node_modules\appium\lib\devices\android\chromedriver.js:195:12)
在 Request._callback (C:\Appium\node_modules\appium\lib\devices\common.js:104 :5)
在 Request.self.callback (C:\Appium\node_modules\appium\node_modules\request\request.js:121:22)
在 Request.EventEmitter.emit (events.js:98: 17)
应要求。 (C:\Appium\node_modules\appium\node_modules\request\request.js:985:14)
在 Request.EventEmitter.emit (events.js:117:20)
在 IncomingMessage。 (C:\Appium\node_modules\appium\node_modules\request\request.js:936:12)
在 IncomingMessage.EventEmitter.emit (events.js:117:20)
在 _stream_readable.js:920: 16
在 process._tickCallback (node.js:415:13)
信息:以错误响应客户端:{"status":33,"value":{"message":"新会话无法被创建。(原始错误:没有从 Chromedriver 获得会话重定向)","origValue":"没有从 Chromedriver 获得会话重定向"},"sessionId":null}
我只想使用 Android 默认浏览器而不是 Chrome。我不知道 Appium 为什么要尝试启动 Chromedriver 和 Chrome 浏览器。下面是我使用的代码。
import java.net.URL;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class Appium {
public WebDriver driver;
@BeforeMethod
public void beforeMethod() throws Exception {
// set up appium
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "Browser");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("platformVersion", "4.4.2");
WebDriver driver = new RemoteWebDriver(new URL(
http://****:4723/wd/hub), capabilities);
driver.get("http://www.yahoo.com");
}
@Test
public void f() {
}
@AfterMethod
public void afterMethod() {
driver.quit();
}
}
【问题讨论】:
-
遇到同样的错误?你有什么解决办法吗?