OK PhantomJSとヘッドレスブラウジングの全機能が新しくなりました。私はSeleniumとPhantomJSを使って自分のウェブサイトをテストしています。このサイトは.NET MVCを使用してC#でビルドされています。 PhantomJSは、クラス定義を含むJSスクリプトをコンパイルすることはできません。PhantomJSはクラス定義のJavaScriptスクリプトをコンパイルしません。
Index.cshtmlは2つだけのスクリプトへの参照が含まれます。
@section scripts {
<script src="~/Scripts/foo.js"></script>
<script src="~/Scripts/bar.js"></script>
}
foo.jsはの内容は次のとおりです。bar.jsの
function add(a, b) {
console.log("this works...")
return a + b;
}
class Polygon {
constructor(height, width) {
this.height = height;
this.width = width;
}
}
内容は以下のとおりです。
console.log("1 + 2 = ", add(1, 2));
を
私はF#のREPLを使ってセレンと遊んでいます。ページに移動するためのコードは次のとおりです。
let driver = new OpenQA.Selenium.PhantomJS.PhantomJSDriver(@"C:\pathToPhantomJS\");
let url = "http://myLocalHost:12345/home/index"
driver.Navigate().GoToUrl(url)
let logs = driver.Manage().Logs.GetLog(OpenQA.Selenium.LogType.Browser)
logs |> Seq.iter (fun l -> printf "%s\n" l.Message)
私はPhantomJSを使用してindex.cshtmlページをヒットしようとすると、私は次のエラーを取得する:
[ERROR - 2016-07-04T21:19:44.274Z] Session [f2c46410-422c-11e6-881e-555d71de793e] - page.onError - msg: ReferenceError: Can't find variable: add
phantomjs://platform/console++.js:263 in error [ERROR - 2016-07-04T21:19:44.275Z] Session [f2c46410-422c-11e6-881e-555d71de793e] - page.onError - stack:
global code (http://localhost:56135/Scripts/bar.js:1)phantomjs://platform/console++.js:263 in error
エラーはできるだけ早く私が実行すると表示されます最初の行(Navigate)。しかし、すぐに、私はfoo.jsはから(ポリゴンの)クラス定義を削除するよう、すべてが互角の-ドーリーです:
this works...
1 + 2 = 3
クローム/ Firefoxでこれに何ら問題はありません。私はどこでも検索しましたが、この問題に近づく唯一のことは、page.evaluate()(here参照)を使った "jailed execution /" sandbox "のことです。しかし、私は明らかにここではpage.evaluate()を使用していませんし、スクリプトがマークアップで順番に参照されるため、ブラウザは定義を拾うことができます(SHOULD)。実際には、それはまさにそれを行います。クラス定義を含めるときには壊れそうです。
私がWindows 10とPhantomJS 2.1.1を実行している場合に役立ちます。ウィンドウのコマンドプロンプトからPhantomJSを実行するときに同じ問題が発生するので、これはSeleniumの問題ではないと思います。
誰でもこの助けてもらえますか?
ありがとうございます!