2011-01-05 17 views
4

MIMEタイプapplication/vnd.wap.xhtml + xmlを持つドキュメントを生成するWebサイトとのやりとりを自動化しようとしています。私はSelenium 2、WebDriver、FirefoxProfileを使用しています。Selenium 2 WebDriverがカスタムプロファイルを使用する

Firefoxは上記のMIMEタイプを処理しないため、FirefoxをXHTML Mobile Profile拡張機能(https://addons.mozilla.org/en-US/firefox/addon/1345/)で実行する必要があります。

「Selenium」という名前のFireFoxプロファイルを作成してモバイルプロファイル拡張機能をインストールした後、「Selenium 2.0 and WebDriver」ドキュメントの「Tips and Tricks」セクションでコードスニペットを使用しようとしました。http ://seleniumhq.org/docs/09_webdriver.html#htmlunit-driver)。 、起動するブラウザインスタンスは、常にすることができませんどんなに私が使用してどのようなコードスニペット

File profileDir = new File("/path/to/custom/profile/with/extension/ffprofile"); 
FirefoxProfile profile = new FirefoxProfile(profileDir); 
profile.setPreference("general.useragent.override", "same user agent string as above"); 
FirefoxDriver driver = new FirefoxDriver(profile); 
driver.get("http://www.mobilesite.com/"); 

:このような

ProfilesIni allProfiles = new ProfilesIni(); 
FirefoxProfile profile = allProfiles.getProfile("selenium"); 
profile.setPreference("general.useragent.override", "User Agent string to force application/vnd.wap.xhtml+xml content.."); 
FirefoxDriver driver = new FirefoxDriver(profile); 
driver.get("http://www.mobilesite.com/"); 
WebElement element = driver.findElement(By.tagName("body")); 

アプローチ#2ルックス:

アプローチ#1は、このようになります生成されたコンテンツを処理する。ブラウザは、拡張子が正しく設定されていないかのように、認識できないMIMEタイプのコンテンツを取得するように求めるメッセージを表示します。

私が間違っている可能性のあるアイデアはありますか?事前に

おかげで、

編集Link to Selenium users group post

+0

おそらく、セレンサポートフォーラムにお尋ねする方がよいでしょうか? –

+5

私は間違いなくそれをやるでしょう。提案していただきありがとうございます。 StackOverflowコミュニティはすごく印象的で、絶対にすべての質問のための私の最初のストップになった... :) – Ytsejammer

+0

Seleniumが起動するときにアドオンがFirefoxで読み込まれていることを確認できましたか? (たとえば、テストが起動したブラウザを閉じずに、アドオンがアドオンウィンドウに表示されているかどうかを確認します。そうでない場合は、名前を付けますSelenium以外のプロフィール(Seleniumが作成したデフォルトプロファイルと同じ場合)、RubyバインディングがFirefoxプロファイル用に提供するadd_extensionメソッドに相当するJavaメソッドを使用して、Seleniumのプロファイルに自動的に拡張機能をロードしてください。 –

答えて

1

空白のプロファイルで起動し、実行時に拡張/構成を追加してみてください:これはあなたを助けるでしょう

public WebDriver getDriver() { 
    FirefoxProfile profile = new FirefoxProfile(); 

    // add any custom firefox configurations... 
    profile.setPreference("general.useragent.override", "some UA string"); 
    profile.setPreference("javascript.options.showInConsole", true); 
    profile.setPreference("dom.max_script_run_time", 0); 

    // might have to uninstall, search for *.xpi, then reinstall, then search 
    // again and compare to find the location on your system 
    // ...you should probably copy this into your selenium resources directory! 
    File modifyHeadersXpi = new File("/home/joecoder/.mozilla/firefox/dll8peh9.default/extensions/{b749fc7c-e949-447f-926c-3f4eed6accfe}.xpi"); 
    if (modifyHeadersXpi.exists()) { 
     try { 
      profile.addExtension(modifyHeadersXpi); 
      profile.setPreference("modifyheaders.config.active", true); 
      profile.setPreference("modifyheaders.config.openNewTab", true); 
      profile.setPreference("modifyheaders.config.migrated", true); 
      profile.setPreference("modifyheaders.autocomplete.name.defaults", 
        "[\"Accept\",\"Cache-Control\",\"Cookie\",\"Content-Length\",\"Content-Type\",\"Date\",\"Host\",\"Pragma\",\"Referer\",\"User-Agent\",\"Via\",\"X-Requested-With\",\"X-Forwarded-For\",\"X-Do-Not-Track\"]"); 
     } 
     catch (IOException e) { /* uh oh */ } 
    } 
    return new FirefoxDriver(profile); 
} 
1

希望:

public class Wap { 

public static void main (String[] args) throws IOException{ 

FirefoxProfile profile = new FirefoxProfile(); 
String baseURL; 
profile.addExtension(new File("C:\\Users\\Pandu\\Desktop\\WAP\\modify_headers-0.7.1.1-fx.xpi")); 

profile.setPreference("modifyheaders.config.active", true); 
profile.setPreference("modifyheaders.config.alwaysOn", true); 
profile.setPreference("modifyheaders.headers.count", 2); 
profile.setPreference("modifyheaders.headers.action0", "Add"); 
profile.setPreference("modifyheaders.headers.name0", "X-Nokia-msisdn"); 
profile.setPreference("modifyheaders.headers.value0", "123456789"); 
profile.setPreference("modifyheaders.headers.enabled0", true); 
profile.setPreference("modifyheaders.headers.action1", "Add"); 
profile.setPreference("modifyheaders.headers.name1", "x-sec-pass"); 
profile.setPreference("modifyheaders.headers.value1", "sdp123"); 
profile.setPreference("modifyheaders.headers.enabled1", true); 


    Logger Log = Logger.getLogger(WebDriver.class.getName()); 

    WebDriver driver = new FirefoxDriver(profile); 
    try{ 
driver.get("http://www.google.com"); 

     driver.findElement(By.linkText("Telugu")).click(); 
+0

ヘッダーを変更する操作は何ですか?代わりに、変更や削除のようなものを追加するのですか? –

1

をあなたはあなたのように、ブラウザのプラグインを追加することを確認する必要がありますtestsettingsファイルのDeploymentItem いくつかの例としては、(これで私たちは、Firebugのを追加した):、

string firebugPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? "", "[email protected]"); 

FirefoxProfile firebugProfile = new FirefoxProfile() {AcceptUntrustedCertificates = true}; 
firebugProfile.AddExtension(firebugPath); 
firebugProfile.SetPreference("extensions.firebug.currentVersion", "1.10.3"); 
firebugProfile.SetPreference("extensions.sce.bypass_domain_mismatch", true); 
firebugProfile.SetPreference("webdriver_assume_untrusted_issuer", false); 

Driver = new FirefoxDriver(firebugProfile); 
Driver.Manage().Window.Maximize(); 

あなたがAddExtensionを使用して拡張子を追加した場合、それを:あなたは、このようになりますプロファイルを作成する必要があります

<Deployment> 
    <DeploymentItem filename="Selenium\[email protected]" /> 
    <DeploymentItem filename="packages\Castle.Core.3.1.0\lib\net40-client\Castle.Core.dll" /> 
    <DeploymentItem filename="Selenium\IEDriverServer.exe" /> 
    <DeploymentItem filename="Selenium\chromedriver.exe" /> 
    <DeploymentItem filename="Selenium\[email protected]" /> 
    </Deployment> 

あなたのセレンのドライバーの中で利用できるはずです。私はこれが役立つことを願っています

関連する問題