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.RemoteWebDriver
Appiumログ:
エラー:デバッグ:Appiumリクエストが/ wd/hub/sessionで開始されました
情報:Androidではchrome
情報:新しいappiumセッションの作成99ff77a0-86fa-4851-93ad-5375c95656e7
エラー:デバッグ:実行中: "D:\ ****\adt-bundle-windows-x86-20140321\sdk\platform-tools\adb.exe"デバイス
情報:セッションのためのデバイスの準備
情報:アプリがすでにデバイス上にあると想定しているため、アプリが存在するかどうかを確認していません
info:adbが存在するかどうかを確認しています
情報:[ADB] D:\ ****\adt-bundle-windows-x86-20140321\sdk\platform-tools\adb.exeのadbを使用
情報:接続されているAndroidデバイスを見つけようとしています
情報:[ADB]接続されたデバイスを取得しています...
情報:[ADB] 1つのデバイスが接続されています
エラー:デバッグ:実行中: "D:\ ****\adt-bundle-windows-x86-20140321\sdk\platform-tools\adb.exe" -sエミュレーター-5554デバイス待機
info:デバイスIDをエミュレーターに設定-5554
情報:[ADB]デバイスの準備が整い、シェルコマンドに応答するのを待っています(タイムアウト= 5)
エラー:デバッグ:実行中: "D:\ ****\adt-bundle-windows-x86-20140321\sdk\platform-tools\adb.exe" -sエミュレーター-5554シェル "echo'ready '"
情報:logcatキャプチャを開始しています
エラー:デバッグ:ロック解除ヘルパーアプリをデバイスにプッシュしています...
エラー:デバッグ:実行中: "D:\ ****\adt-bundle-windows-x86-20140321\sdk\platform-tools\adb.exe" -sエミュレーター-5554インストール "C:\ Appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk "
エラー:デバッグ:実行中: "D:\ ****\adt-bundle-windows-x86-20140321\sdk\platform-tools\adb.exe" -sエミュレーター-5554シェル "dumpsys window"
情報:dumpsys出力をC:\ Appium\node_modules\appium\.dumpsys.logに書き込んでいます
エラー:デバッグ:画面はすでにロック解除されています。続行します。
情報:作成Chromeセッション
情報:Chromedriverが存在することを確認する
info:古いchromedriverを強制終了し、実行中:FOR/F "usebackq tokens = 5"%a in( `netstat -nao ^ | findstr/R/C:" 9515 "`)do(FOR/F "usebackq"%b in ( `TASKLIST/FI" PID eq%a "^ | findstr/I chromedriver.exe`)do(IF NOT%b ==" "TASKKILL/F/PID%b))
情報:古いクロムドライバーは存在しないようでした
情報:次のコマンドでchromedriverを生成します:C:\ Appium\node_modules\appium\build\chromedriver\windows\chromedriver.exe
情報:[CHROMEDRIVER]ポート9515でChromeDriver(v2.9.248315)を起動しています
info: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エミュレーター-5554デバイス
情報:[CHROMEDRIVER STDERR] [0.003] [SEVERE]:ソケットを0.0.0.0:9515にバインドできませんでした
info:[CHROMEDRIVER]ポートが利用できません。終了しています...
情報:Chromedriverはコード1で終了しました
情報:[ADB]接続されたデバイスを取得しています...
エラー:エラー:Chromedriver作成セッションが機能しませんでした。ステータスは200、本体は{"sessionId": "ba9a494082776d6b4836da850072cbcb"、 "status":13、 "value":{"message": "不明なエラー:デバイスエミュレータ-5554はすでに使用されています\ n(ドライバ情報: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_written.js:920:16
process._tickCallback(node.js:415:13)で
info:エラーでクライアントに応答しています:{"status":33、 "value":{"message": "新しいセッションを作成できませんでした。(元のエラー:Chromedriverからセッションリダイレクトを取得できませんでした)"、 "origValue" : "Chromedriverからセッションリダイレクトを取得しませんでした"}、 "sessionId":null}
ChromeではなくAndroidデフォルトのブラウザのみを使用したい。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();
}
}
以下のURLを_http://0.0.0.0:9515/wd/hub
_ ...ではなく_****:4723
_に設定する必要があります。
WebDriver driver = new RemoteWebDriver(new URL(http://****:4723/wd/hub), capabilities);
Chromedriverのポートのデフォルトは4723ではなく9515です。これに関するドキュメントを読む必要があります。正しく設定する必要のある他の機能があります(_BROWSER_NAME
_など)
この問題はかなり古いものであり、chromeドライバーバージョンの更新とともに、appiumクライアントの使用法について多くの定義が変更されています。しかし、私が理解できたのは、ここでの問題でした。これはログからでした:
エラー:エラー:Chromedriver作成セッションが機能しませんでした。ステータスは200、本体は{"sessionId": "ba9a494082776d6b4836da850072cbcb"、 "status":13、 "value":{"message": "unknown error:デバイスエミュレータ-5554はすでに使用中です\n(ドライバー情報:chromedriver = 2.9.248315、platform = Windows NT 6.1 SP1 x86) "}}
その結果、さらに:
org.openqa.Selenium.SessionNotCreatedException:新しいセッションを作成できませんでした。 (元のエラー:Chromedriverからセッションリダイレクトを取得しませんでした)(警告:サーバーはスタックトレース情報を提供しませんでした)
したがって、SessionNotCreatedException。
これに対するより簡単な修正は、ポートの競合とセッションの失敗を回避するために、別のセッションを開始する前に他のセッションが進行中でないことを確認することです。
古いchromeドライバーを新しいchromeドライバーをappiumの場所に置き換えてください、それは私のために働きました。
Appiumの場所は次のようになります。
C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\
Appiumバージョン:1.4.16.1
以下のステートメントにコメントした後に実行してみてください
capabilities.setCapability("platformVersion", "4.4.2");
Android機能= DesiredCapabilities.Android()に設定する最も安全な方法
PS:スクリプトがSeleniumノード/ハブに接続できないため、セッションが作成されません。構成を確認する必要があります
ポストスタックトレースの場合と同様に、http:// **:9515 /に接続します(前述のポート4723とは異なります)