2

iOS ブラウザーで Selenium WebDriverJS を使用しようとしています。残念ながら、これは必要なため機能しません。

iPhoneDriver wiki pageで説明されているように、「iWebDriver」プロジェクトをセットアップしました。Pythonスクリプトをコピーしましたが、うまくいきました。小さな nodeJS プロジェクトでも機能しましたが、ブラウザー Firefox から実行しようとすると、次のエラー メッセージが表示されます。

エラー: このブラウザの新しいクライアントを作成できません。WebDriver セッション ID が定義されていません。

実行しようとしているコード:

var driver = new webdriver.Builder().
    usingServer('http://localhost:3001/wd/hub').
    withCapabilities({'browserName': 'iPhone'}).
    build();

driver.get('http://www.google.com');
driver.quit();

WebDriverJs wiki page に記載されているように webdriverjs をコンパイルしました。はい、webdriver.js がロードされます ;)

4

2 に答える 2

2

それで私は掘り下げました、そして私は解決策があると思います。ハックのように思えますが、Firefox 用であり、私が作成している Firefox 拡張機能は、これまでのところ完全に正常に動作します。

webdriver.jsファイルwebdriver.Builder.prototype.buildをそのまま編集しました

webdriver.Builder.prototype.build = function() {
  var a;
//  if(webdriver.FirefoxDomExecutor.isAvailable()) {
//    return a = new webdriver.FirefoxDomExecutor, webdriver.WebDriver.createSession(a, this.getCapabilities())
//  }
  a = new webdriver.http.CorsClient(this.getServerUrl());
  a = new webdriver.http.Executor(a);
//  if(this.getSession()) {
//    return webdriver.WebDriver.attachToSession(a, this.getSession())
//  }
//  throw Error("Unable to create a new client for this browser. The WebDriver session ID has not been defined.");
  return webdriver.WebDriver.createSession(a, this.getCapabilities());
};

FirefoxDomExecutor基本的に、セッションの作成を強制していますが、変更を加えたFirefoxとChromeで問題なく動作するため、なぜ必要なのかわかりません。とにかく、私を正しい軌道に乗せてくれてありがとう。うまくいけば、これが他の人に役立つことを願っています。

于 2013-05-09T17:36:58.187 に答える
1

Node.jsで実行していない場合、WebDriverJSは新しいセッションを作成できないようです。

手動でセッションを作成し、WebDriverJS にセッション ID をwdsid GET パラメータとして提供する必要があります (例: urltowebdriver.html?wdsid=someID&wdurl=localhost:9000)。

于 2013-05-09T16:17:19.870 に答える