私はfirefoxとchromeで分度器を使ってマルチブラウザテストを実装しようとしています。しかし、テストのために、私はダウンロードパスを変更する必要があります。クロームでは動作しますが、firefoxでは、私が見つけた解決策はfirefoxのプロフィールを変更することでした。私はまた、この質問Set firefox profile protractorの答えのようにそれを行う方法を見つけました。エラー:profile.getTemplateDirは関数ではありません
しかし、変更されたプロファイルを持つfirefoxの1つのインスタンスの横にナビゲータの複数のインスタンスを実行しようとすると、私はいつもprofile.getTemplateDir is not a function
というエラーを受け取ります。ここで
は私の分度器の設定ファイル内のコードです:
var q = require('q');
var FirefoxProfile = require("selenium-webdriver/firefox").Profile
function getProfiles() {
let deferred = q.defer();
let multiCapabilities = [{
browserName: 'chrome'
}]
deferred.resolve(multiCapabilities);
let firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList", 2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
firefoxProfile.setPreference("browser.download.dir", '/tmp');
let foxCapabilities = {
browserName: 'firefox',
firefox_profile: firefoxProfile
};
multiCapabilities.push(foxCapabilities);
deferred.resolve(multiCapabilities);
return deferred.promise;
}
exports.config = {
seleniumAddress: "http://localhost:4444/wd/hub",
specs: [
'spec.js'
],
framework: 'jasmine2',
getMultiCapabilities: getProfiles,
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
},
};
は、このエラーがトリガーとどのようにそれを解決することですなぜ誰もが知っていますか?セレンのWebドライバーで現在
を
おかげで
は、私はあなたの問題は、プロファイルが一度作成し、このコードは、Firefoxの1つのインスタンスのために働くの枠組み –
によって再利用されていることだと思いますが、もしエンコードされたプロファイルを送信できるようにするパッチが適用された後に働くだろうものですたとえば、クロムやFirefoxのブラウザの別のインスタンスを追加しようとすると、エラーが発生します。 – aozora
コードが2回目の呼び出しで新しいプロファイルオブジェクトを生成しないためです。あなたはそれをデバッグする必要があります。 –