2017-04-21 11 views
0

実行時にPhantomJSのプロキシをdinamically変更する方法があります。 C#C#を使用してSelenium.Webdriver + PhantomJSで実行時にプロキシを変更

driver = webdriver.PhantomJS() 
driver.command_executor._commands['executePhantomScript'] = ('POST', '/session/$sessionId/phantom/execute') 
driver.execute('executePhantomScript', {'script': '''phantom.setProxy("10.0.0.1", 80);''', 'args' : [] }) 

私がしようとしている:ここでpythonコードです

((IJavaScriptExecutor)driver).ExecuteScript(@"phantom.setProxy(""10.0.0.1"", 80)"); 

取得例外:

{ "にErrorMessage": ": ファントム変数を見つけることができません" {"受け入れ": "アプリケーション/ json、 イメージ/ png"、 "接続": "閉じる"、 "コンテンツ長": "62"、 "コンテンツタイプ": "要求" "application/json; charset = utf-8"、 "Host": "localhost:5 "POST"、 "post": "{\"スクリプト\ ":\" phantom.setProxy(\\ "10.0.0.1 \\"、 80) "、" "、"ファイル ":"実行 "、"実行 "、" "/"、 "パス": "/実行"、 "相対": "/実行"、 "ポート": ""、 "ホスト": ""、 "パスワード": ""、 "ユーザー" ":"、 "userInfo": ""、 "authority": ""、 "protocol": ""、 "source": "/ execute"、 "queryKey":{}、 "chunks" ]}、 "urlOriginal": "/セッション/ 513f2130-26b4-11e7-b459-45c0e08b428c /実行"}}

答えて

1

一つの制限.NETでリモートでこれを行うことができないということです(経由セレングリッドなど)。これをローカルでしか行うことはできません。これを行うコードは、次のようになります。

// WARNING! Untested code written without benefit of 
// an IDE. Might not run or even compile without modification. 
// First, cast the IWebDriver interface back to the concrete 
// PhantomJSDriver implementation. 
PhantomJSDriver phantomDriver = driver as PhantomJSDriver; 
if (phantomDriver != null) 
{ 
    // If the cast succeeded, the implementation has the 
    // ExecutePhantomJS method, which executes script in 
    // the browser context instead of the page context. 
    phantomDriver.ExecutePhantomJS("phantom.setProxy('10.0.0.1', 80);"); 
} 
+0

完璧に動作します。 – AsValeO

関連する問題