-1

Watirでブラウザのヘッダーを変更するにはどうすればよいですか?

Watir を使用するときに、ブラウザーのヘッダー (Firefox または Chrome) を変更したいと考えています。

watir-user-agent gem については知っていますが、ブラウザーのバージョンを変更することに興味があります。

それは可能ですか?

ありがとう

4

2 に答える 2

1

はい、これは可能です。残念ながら、Watir はこれを行うための非常に簡単な方法を提供していないようですが、機能する 2 つの簡単なオプションを次に示します。

A. プロキシ サーバーを使用します。

これは、一般的にヘッダーを変更するためのよく理解された方法です。ただし、自動化中に個人的に使用したことはありません。

手順 :
1. テスト コードを実行する前にプロキシ サーバーをセットアップします
。 2. プロキシ サーバーがすべてのリクエストに必要なヘッダーを追加することを確認します
。 3. 次に、テスト ブラウザがページをリクエストすると、----> プロキシ サーバーは必要なヘッダー。

B. ブラウザ拡張機能を使用する

Watir はそれ自体でヘッダーを変更できないように見えるため、Watir に通常のブラウザー拡張機能を使用するように依頼するだけです。
Chrome と firefox を使用してこれを正常に実行しました
注: これらの手順は、指定された拡張機能でのみ機能しますが、同様のアプローチは他の多くの拡張機能でも正常に機能するはずです。

Firefox の手順:
1. firefox を起動 します。
2. 非常に一般的な検索エンジンを使用して「Modify Headers Firefox」を検索します .... 上位の結果はhttps://addons.mozilla.org/En-us/firefox/addon/modify-です。 headers/
3. この拡張機能の .xpi ファイルをダウンロードします ... 現在、ボタンを右クリックして [名前を付けてリンクを保存] をクリックすると、これを実行できます
4. 通常どおり拡張機能をインストールし、必要に応じてヘッダーを変更し、Firefox を閉じます、次に「modifyheaders.conf」ファイルを見つけて保存します...このファイルはユーザーフォルダーのどこかにあるはずです
5.次のクラスを作成します(プロファイルを拡張します)

class FirefoxProfileWithAddedFiles < Selenium::WebDriver::Firefox::Profile

  # This method OVERRIDES the one in Profile
  # This method creates the firefox profile folder
  def layout_on_disk
    #Call the superclass layout method
    profile_directory = super
    #Add custom file
    if(!@file_to_add_to_profile.nil?)
      FileUtils.cp(@file_to_add_to_profile, profile_directory)
    end
    profile_directory
  end

  def add_file_to_profile(filepath)
    @file_to_add_to_profile = filepath
  end


6. テスト スクリプトを次のように設定します。

    ...
    #Setup Firefox Profile
    profile = Selenium::WebDriver::Firefox::Profile::FirefoxProfileWithAddedFiles.new
    profile.add_extension("SOMEPATH/modifyheaders.xpi")
    profile.add_file_to_profile("SOMEPATH/modifyheaders.conf")
    profile["modifyheaders.config.active"] = true

    #Start up Firefox
    @browser = Watir::Browser.new :firefox, :profile => profile
    ...

Chrome の手順
1. Chrome を起動 します
2. 非常に人気のある検索エンジンを使用して「Modify Headers Firefox」を検索します .... 上位の結果はhttps://chrome.google.com/webstore/detail/modify-headers-for-googleです/innpjfdalfhpcoinfnehdnbkglpmogdi
3. 通常どおり拡張機能をインストールし、必要に応じてヘッダーを変更してから、chrome を閉じ
ます。 4. 展開された拡張機能フォルダーを見つけてコピーします。Windowsでは、フォルダーは次のようになります...

C:\Users\MYNAME\AppData\Local\Google\Chrome\User Data\Default\Extensions\innpjfdalfhpcoinfnehdnbkglpmogdi\2.0.3_0


5. 拡張構成ファイルを見つけてコピーします。Windowsでは、ファイルは次のようになります...

C:\Users\MYNAME\AppData\Local\Google\Chrome\User Data\Default\Local Storage\chrome-extension_innpjfdalfhpcoinfnehdnbkglpmogdi_0.localstorage


6. テスト スクリプトを次のように設定します。

...
#Setup Chrome Profile Folder
profile_directory = Dir.mktmpdir("webdriver-chrome-profile")
extension_configuration_folder = FileUtils.mkdir_p "#{profile_directory}/Default/Local Storage"
FileUtils.cp("PATH_TO_MY_EXTENSION_CONFIGURATION_FILE", extension_configuration_folder[0])

#Start Webdriver
@browser = Watir::Browser.new :chrome, :switches => ["--user-data-dir=#{profile_directory}", "--load-extension=#{PATH_TO_MY_UNPACKED_EXTENSION_FOLDER"]
...
于 2015-09-22T11:33:23.647 に答える
0

Watir はブラウザー ウィンドウ内でブラウザーを自動化し、OS レベルでの対話 (アラートへの応答など) を非常に制限します。ブラウザーを必要に応じて (可能であると仮定して) 事前に構成する必要があります。それを行うためにブラウザのOSレベルコントロールと対話するAutoitなどのツール..(ブラウザには、ウェブサイトにリクエストを行うときに、ブラウザとバージョンに関して報告しているものを変更できる機能さえあると仮定します)

Watir-Webdriver を Firefox と一緒に使用している場合は、これらのパラメーターを設定するプロファイルを介してこれを実行できる場合があります。その場合、プロファイルを作成してから、そのプロファイルが指定されたブラウザ オブジェクトを作成します。これはほぼ webdriver 関数ですが、ブラウザ オブジェクトを作成するときに簡単にアクセスできます。

プロファイルの作成時に使用するパラメーター (コメントの下) については、この webdriver バグを参照してください。Firefox のプロファイルをセットアップして使用する方法の詳細については、webdriver のドキュメントを参照してください。

別の便利なオプションは、ユーザー エージェント gem のコードの独自のバージョンをフォークし、設定するものの 1 つとして browser_version を追加することです。FF 用のプロファイルを使用しているので、少なくとも FF ではそれが可能なはずです。Chrome の場合、user-agent スイッチを使用して useragent 文字列をオーバーライドしているため、そこでも可能であるはずですが、gem が使用する固定文字列を変更して、バージョンのある部分をあなたが望むもの。

その後、機能するようになったら、プル リクエストを発行して、その拡張機能を gem に追加します。

または、自分でそのようなことを行うことができない場合は、gem の作成者がバージョンを設定できるものの 1 つにするために gem を拡張する場合は、gem の作成者に適切な何かで賄賂を贈ることを懇願し、嘆願し、申し出てください。

于 2012-04-24T21:40:13.973 に答える