私は以下のコードを使用して認証ポップアップを処理しようとしています:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.http.phishy-userpass-length", 255);
profile.setPreference("network.automatic-ntlm-auth.trusted-uris", "x.x.x.x");
driver = new FirefoxDriver(profile);
baseUrl="http://" + login + ":" + password + "@" + url;
driver.get(baseUrl + "/");
テストを実行すると、ページに認証ポップアップが表示され、キャンセルボタンをクリックするまでロードされ続けます。その瞬間、次のページにアクセスできます。つまり、認証は成功しますが、常に認証ポップアップが表示されます。
アラートメソッド authenticateUsing()
を使用すると、Http Basic Authenticationボックスをスキップできます。
WebDriverWait wait = new WebDriverWait(driver, 10);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword(username, password));
Selenium 3.4の時点では、まだベータ版です
現在、実装は
InternetExplorerDriver
に対してのみ行われています
Firefoxプロファイルを使用しないで、以下のコードを試してください。
driver.get("http://UserName:[email protected]");
IEブラウザーで実装する場合、特定の作業が必要です。
認証サーバーが「domainuser」などのドメインのユーザー名を必要とする場合は、URLに二重スラッシュ/
を追加する必要があります。
//localdomain\user:[email protected]
次の解決策を試してみて、問題が発生した場合はお知らせください。
driver.get('https://example.com/')
driver.switchTo().alert().sendKeys("username" + Keys.TAB + "password");
driver.switchTo().alert().accept();
これは私のためにうまく機能しています
私はこの問題に何度も直面しました。
通常、これは以下の2つのアプローチで処理できます。
ユーザー名とパスワードをURL自体に渡します
URLを開く前に、AutoITスクリプトを作成してスクリプトを呼び出すことができます。
両方の方法について言及した以下の記事を確認してください。
Selenium Webdriverの[認証/ログインの処理]ウィンドウ
これは AutoAuthプラグイン を使用してFirefoxで機能するはずです:
FirefoxProfile firefoxProfile = new ProfilesIni().getProfile("default");
File ffPluginAutoAuth = new File("D:\\autoauth-2.1-fx+fn.xpi");
firefoxProfile.addExtension(ffPluginAutoAuth);
driver = new FirefoxDriver(firefoxProfile);
NTLMプロキシ認証を処理する必要がある場合は、 CNTLM を使用してローカルプロキシを構成することをお勧めします。
資格情報とドメインは/etc/cntlm.conf
で構成されます。
その後、すべてのNTLMを処理する独自のプロキシを使用できます。
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
Proxy proxy = new Proxy();
proxy.setHttpProxy("localhost:3128");
capabilities.setCapability(CapabilityType.PROXY, proxy);
driver = new ChromeDriver(capabilities);