38

Selenium Webdriverを使用してログインポップアップウィンドウを処理するにはどうすればよいですか?ここにサンプル画面を添付しました。このログインポップアップ/アラートウィンドウにユーザー名とパスワードを入力/入力するにはどうすればよいですか?

ありがとうございます。それでは、お元気で、 ここに画像の説明を入力してください

4

16 に答える 16

41

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...
}
于 2012-07-17T12:46:35.677 に答える
5

これは WebDriver 3.0 では非常に簡単です (現在はベータ版です)。

Alert alert = driver.switchTo().alert() ;
alert.authenticateUsing(new UserAndPassword(_user_name,_password));
driver.switchTo().defaultContent() ; 

うまくいけば、これが役に立ちます。

于 2016-08-10T09:38:15.250 に答える
3

解決策: スレッドとロボットを使用した 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);
        }                        
    }      
}
于 2015-05-06T05:04:32.830 に答える
0

この Autoit スクリプトを使用して、ログイン ポップアップを処理できます。

WinWaitActive("Authentication Required","","10")
If WinExists("Authentication Required") Then
Send("username{TAB}")
Send("Password{Enter}")
EndIf'
于 2013-01-30T11:56:55.453 に答える
-1

次の 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();
于 2013-03-27T07:03:28.847 に答える