Selenium Webdriverを使用してログインポップアップウィンドウを処理するにはどうすればよいですか?ここにサンプル画面を添付しました。このログインポップアップ/アラートウィンドウにユーザー名とパスワードを入力/入力するにはどうすればよいですか?
ありがとうございます。それでは、お元気で、
Selenium Webdriverを使用してログインポップアップウィンドウを処理するにはどうすればよいですか?ここにサンプル画面を添付しました。このログインポップアップ/アラートウィンドウにユーザー名とパスワードを入力/入力するにはどうすればよいですか?
ありがとうございます。それでは、お元気で、
URL リクエストでユーザー名とパスワードを送信するアプローチを使用します。
http://username:password@the-site.com
ですから、それをより明確にするために。ユーザー名はusername
パスワードでpassword
、残りは通常のテスト Web の URL です。
微調整を必要とせずに私のために働きます。
サンプル Java コード:
public static final String TEST_ENVIRONMENT = "the-site.com";
private WebDriver driver;
public void login(String uname, String pwd){
String URL = "http://" + uname + ":" + pwd + "@" + TEST_ENVIRONMENT;
driver.get(URL);
}
@Test
public void testLogin(){
driver = new FirefoxDriver();
login("Pavel", "UltraSecretPassword");
//Assert...
}
これは WebDriver 3.0 では非常に簡単です (現在はベータ版です)。
Alert alert = driver.switchTo().alert() ;
alert.authenticateUsing(new UserAndPassword(_user_name,_password));
driver.switchTo().defaultContent() ;
うまくいけば、これが役に立ちます。
解決策: スレッドとロボットを使用した Windows Active Directory 認証
Selenium webdriver で Java Thread と Robot を使用して、Web サイトの Windows Active Directory 認証プロセスを自動化しました。このロジックは Firefox と Chrome では正常に機能しましたが、IE では機能しませんでした。何らかの理由で、IE は認証ウィンドウがポップアップしたときに Web ドライバーを強制終了しますが、Chrome と Firefox は Web ドライバーが強制終了されないようにします。Safari などの他の Web ブラウザでは試していません。
//...
//Note: this logic works in Chrome and Firefox. It did not work in IE and I did not try Safari.
//...
//import relevant packages here
public class TestDemo {
static WebDriver driver;
public static void main(String[] args) {
//setup web driver
System.setProperty("webdriver.chrome.driver", "path to your chromedriver.exe");
driver = new ChromeDriver();
//create new thread for interaction with windows authentication window
(new Thread(new LoginWindow())).start();
//open your url. this will prompt you for windows authentication
driver.get("your url");
//add test scripts below ...
driver.findElement(By.linkText("Home")).click();
//.....
//.....
}
//inner class for Login thread
public class LoginWindow implements Runnable {
@Override
public void run() {
try {
login();
} catch (Exception ex) {
System.out.println("Error in Login Thread: " + ex.getMessage());
}
}
public void login() throws Exception {
//wait - increase this wait period if required
Thread.sleep(5000);
//create robot for keyboard operations
Robot rb = new Robot();
//Enter user name by ctrl-v
StringSelection username = new StringSelection("username");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(username, null);
rb.keyPress(KeyEvent.VK_CONTROL);
rb.keyPress(KeyEvent.VK_V);
rb.keyRelease(KeyEvent.VK_V);
rb.keyRelease(KeyEvent.VK_CONTROL);
//tab to password entry field
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
Thread.sleep(2000);
//Enter password by ctrl-v
StringSelection pwd = new StringSelection("password");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(pwd, null);
rb.keyPress(KeyEvent.VK_CONTROL);
rb.keyPress(KeyEvent.VK_V);
rb.keyRelease(KeyEvent.VK_V);
rb.keyRelease(KeyEvent.VK_CONTROL);
//press enter
rb.keyPress(KeyEvent.VK_ENTER);
rb.keyRelease(KeyEvent.VK_ENTER);
//wait
Thread.sleep(5000);
}
}
}
この Autoit スクリプトを使用して、ログイン ポップアップを処理できます。
WinWaitActive("Authentication Required","","10")
If WinExists("Authentication Required") Then
Send("username{TAB}")
Send("Password{Enter}")
EndIf'
次の Selenium-Webdriver Java コードは、アラート/ポップアップ ウィンドウを適切に処理する必要があります。
driver.switchTo().alert();
//Selenium-WebDriver Java Code for entering Username & Password as below:
driver.findElement(By.id("userID")).sendKeys("userName");
driver.findElement(By.id("password")).sendKeys("myPassword");
driver.switchTo().alert().accept();
driver.switchTo().defaultContent();