为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Selenium WebDriver处理登录弹出窗口?

/ 猿问

如何使用Selenium WebDriver处理登录弹出窗口?

ABOUTYOU 2019-11-29 15:33:15

如何使用Selenium Webdriver处理登录弹出窗口?我已在此处附上示例屏幕。我如何输入/输入此登录名弹出/警告窗口的用户名和密码?



查看完整描述

3 回答

?
慕斯卡3215842

使用在URL请求中发送用户名和密码的方法:


http://username:password@the-site.com

因此,只是为了使其更加清晰。用户名是usernamepassword password,其余是测试网站的常用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...

}


查看完整回答
反对 2019-11-29
?
HUWWW

这应该适用于Windows Server 2012和IE。


var alert = driver.SwitchTo().Alert();


alert.SetAuthenticationCredentials("username", "password");


alert.Accept();


查看完整回答
反对 2019-11-29
?
动漫人物

使用线程和机械手的Windows Active Directory身份验证


我将Java Thread和Robot与Selenium webdriver一起使用来自动执行我们网站的Windows Active Directory身份验证过程。这种逻辑在Firefox和Chrome中工作正常,但在IE中则行不通。由于某种原因,当弹出身份验证窗口时,IE会杀死Web驱动程序,而Chrome和Firefox会阻止Web驱动程序被杀死。我没有在其他网络浏览器(例如Safari)中尝试过。


//...

//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);

        }                        

    }      

}



查看完整回答
反对 2019-11-29
  • 3 回答
  • 0 关注
  • 298 浏览

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信