2016-07-04 4 views
1

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の問題ではないと思います。

誰でもこの助けてもらえますか?

ありがとうございます!

答えて

1

これは、PhantomJSのECMA6サポートの問題です。私はTypeScriptを使用していて、Chrome/Firefox用に動作していたECMA6にコンパイルしていますが、まだPhantomJSではサポートされていません。

関連する問題