web-dev-qa-db-ja.com

Selenium WebDriverでFirefoxDriver、ChromeDriver、IEdriverの基本認証を実行する方法

私はSelenium-Firefox-driverSelenium-Chrome-Driverバージョン2.0a5(Web Driver API)、BASIC認証を備えたWebアプリをテストしようとしています(どのページ、ポップアップをヒットしてもユーザーを認証するポップアップが表示されます) HTMLの一部ではありません)。

次に、Firefoxでユーザーを認証する戦略が必要です。Chrome and IE(IEまもなくドライバー)。

たとえば、Firefoxプロファイルを設定できるいくつかの記事を読んでいました。

FirefoxProfile ffProfile = new FirefoxProfile();
ffProfile.setPreference("network.http.phishy-userpass-length", 255);
WebDriver driver = new FirefoxDriver(ffProfile);
driver.get("http://username:password@hostname");  

しかし、それは私にはうまくいかないようです。誰もがそれらのブラウザ用の実用的なソリューションを持っていますか?

39
sebarmeli

確かに、BASIC HTTP認証は現在サポートされていませんが、FFおよびChromeで動作するようになりました。

質問で書いたコードは、これらのドライバーで機能します。 FF4(まだサポートされていません)の代わりに、Firefoxのデフォルトブラウザ(Firefoxフォルダにインストールされている)としてFF3.6を使用してみました。 IEの場合、Windowsレジストリを介して認証を無効にしようとする場合があります。

このページ http://code.google.com/p/Selenium/issues/detail?id=34 が役立つ場合があります。

6
sebarmeli

次の方法でFirefox Webdriverで動作するようにしました。

profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "google.com");
driver = new FirefoxDriver(profile);

driver.Navigate().GoToUrl("http://user:[email protected]");
10
Rod

この新しいFirefoxプロファイルをコードに追加します

ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("myProjectProfile"); //replace "myProjectProfile" with your profile"
WebDriver driver = new FirefoxDriver(myprofile);

Firefoxの構成設定

これは、次の設定を行うときに認証を求めることなく正常に機能します。

  • FF URLに「about:config」と入力します
  • 検索フィールドに「Proxy」と入力します
  • signon.autologin.proxy」が設定されていることを確認してください「true(デフォルトでは「false」です)

デフォルト/カスタムをロードChrome Selenium WebDriverを使用してテストを実行するプロファイル


  1. ダウンロードchromedriver.exe
  2. chromedriver_win_26.0.1383.0.Zipフォルダーを抽出し、.exeファイルをC:/フォルダーに配置します

Javaコードにこのスクリプトを追加します

DesiredCapabilities capability = DesiredCapabilities.chrome();
System.setProperty("webdriver.chrome.driver", "C:/chromedriver.exe");
capability.setCapability("chrome.switches", Arrays.asList("–disable-extensions"));
capability.setCapability("chrome.binary", "C:/Users/user_name/AppData/Local/Google/Chrome/Application/chrome.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data/Default");
driver = new ChromeDriver(capability);

注:IEは、FirefoxとChromeがバイナリで動作する間にサーバーユーザーで実行されるため、テストを実行するためにプロファイルをセットアップする必要はありません。

3
Prashanth Sams

移植性を高めるために、これはスタブAPIおよび Alert を使用して処理できます。

例Java code( sample ):

import org.openqa.Selenium.Alert;
import org.openqa.Selenium.security.Credentials;
public void authenticateUsing(Credentials credentials) {
    private final Alert alert;
    alert.authenticateUsing(credentials);
}

参照: auth_tests.py

または、次のようにキーを手動で送信します。

SendKeys("user");
SendKeys("{TAB}");
SendKeys("password");
SendKeys("~"); // Enter

次の機能リクエストも参照してください。 #453 GitHubでのポータブルBASIC認証

関連:

2
kenorb

Internet Explorerでhttp認証を有効にするには、レジストリを編集してこれを追加する必要があります(キーが存在しない場合はキーを作成します)。

  1. HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE、DWORDを作成iexplore.exeの値は0

  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE、DWORDを作成iexplore.exeの値は0

  3. Internet Explorerを閉じて再度開きます

X64 IEを使用している場合、パスは少し異なります。

  • HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
2
onionpsy

Selenium 2とChrome(Chromeのバグによる)で基本認証を使用できなかったため、Chromeを送信する拡張機能を作成しました基本認証資格情報( https://chrome.google.com/webstore/detail/basic-authentication-auto/dgpgkkfheijbcgjklcbnokoleebmeokn を参照)。

1
Juan Lago

http://mogotest.com/blog/2010/06/23/how-to-perform-b​​asic-auth-inでHTTPヘッダーを手動で設定することにより、Selenium 1.xで認証を実行するためのソリューションがあります-Selenium しかし、ヘッダーにアクセスできないため、これがSelenium 2に転送できるとは思わない。

情報によると こちら 「Selenium 2の基本認証サポート」がSelenium 2 Beta 2に追加されましたが、ソースコードを見ると、匿名アクセスからリモートSeleniumサーバーを保護する方法として実装されていることがわかります。

答えは、BASIC HTTP認証が現在サポートされていないことだと思います。

1
Naishy