处理登录/密码弹出Selenium JAVA

时间:2017-01-17 17:29:32

标签: java selenium

我们正在尝试验证我们的网站http://xmonad.org/xmonad-docs/X11/Graphics-X11-Xlib-Types.html。 它要求输入用户名和密码,我们必须通过我们的selenium java代码提供。 你能帮我吗? 谢谢, Rachit

6 个答案:

答案 0 :(得分:1)

在调用driver.get命令之前,您需要构造一个testURL。

所以假设 用户名= admin 传递=传递

String testURL = "https://" + "admin" + ":" + "pass" + "@" + "staging.rockettes.com/";

现在您可以安全地调用您的driver.get,如下所示:

driver.get(testURL);

祝你好运!

在发表评论后

更新了答案

好的,所以为了接受你可以使用的警报:

WebDriverWait waitTime = new WebDriverWait(driver, 5);

Boolean isAlertPresent = wait.until(ExpectedConditions.alertIsPresent());

if(isAlertPresent==true){
Alert alert = driver.switchTo().alert();
alertText = alert.getText();
alert.accept();
}
else{
System.out.println("No alert was present!")
}

答案 1 :(得分:0)

我认为,点击你的URL的弹出窗口不是基于网络的警报,而是它是一个窗口警报,所以你可以在AutoIT的帮助下处理它,或者你可以使用Robot类来做到这一点如下(虽然不推荐):

    String userName = "ADMIN";
    StringSelection stringSelection = new StringSelection(userName);
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    clipboard.setContents(stringSelection, stringSelection);

    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);

    String password = "PASS";
    StringSelection stringSelection1 = new StringSelection(password);
    Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard();
    clipboard1.setContents(stringSelection1, stringSelection1);


    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);

    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);

答案 2 :(得分:0)

如果处理弹出窗口,请在传递用户名和密码之前使用以下命令

 driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

答案 3 :(得分:0)

您可以使用以下任何方式:

<强> 1。通过URL:

String url= "https://" + "username" + ":" + "password" + "@" + "staging.rockettes.com";
driver.get(url);

<强> 2。警报

Alert alert = wait.until(ExpectedConditions.alertIsPresent());     
alert.authenticateUsing(new UserAndPassword("username", "password"));

第3。 AutoIt的

处理身份验证窗口的自动脚本:

WinWaitActive("Windows Security")
Send("username")
Send("{TAB}")
Send("password")
Send("{ENTER}")

将此文件另存为“auth.au3” 右键单击该文件并选择“编译脚本(x86)”选项,它将生成“auth.exe” 现在编写示例java代码以使用它:

driver.get("https://staging.rockettes.com/");
Runtime.getRuntime().exec("E:\\AutoIT\\auth.exe");

<强> 4。 Sikuli

Screen screen = new Screen();
driver = new FirefoxDriver();
driver.get("https://staging.rockettes.com/");
screen.type("C:\\username.png"),"username");
screen.type("C:\\password.png","password");
screen.click("C:\\okButton.png");

答案 4 :(得分:0)

尝试一下, 以下解决方案特定于chrome,并且相同的方法也可以应用于不同的浏览器

public String getBaseUrl() {
    StringBuilder stagingURl = new StringBuilder();
    try {
        URL url = new URL(baseUrl);
        stagingURl
            .append(url.getProtocol())
            .append("://")
            .append(URLEncoder.encode(stagingUsername, "utf-8"))
            .append(":")
            .append(URLEncoder.encode(stagingPassword, "utf-8"))
            .append("@")
            .append("staging.rockettes.com");

        return stagingURl.toString();
    } catch (UnsupportedEncodingException | MalformedURLException e) {
        return "Issue while encoding URL" + e.getMessage();
    }

答案 5 :(得分:0)

给定的解决方案无法使用selenium get()方法加载这样的URL,以提示使用JavaScript Popup进行身份验证,我在这里也呆了很长时间。这是因为Chrome驱动程序在更新59之后(​​可能)不允许使用这种身份验证技术。仍然有通过Selenium使用浏览器中的JavaScript引擎加载此类URL的后门程序。

driver.get("https://www.google.com");
JavascriptExecutor jse = (JavascriptExecutor) driver;
URL = "https://username:password@www.example.com";
jse.executeScript("window.open('"+URL+"')");