处理使用Selenium浏览器认证处理使用Selenium浏览器认证(Handling Browse

2019-05-13 18:07发布

有谁知道怎样处理浏览器验证使用Selenium或自动化过程中任何其他工具?

Answer 1:

编辑2015年:

这个答案已经过时。 如今的webdriver支持认证! 请参阅如何使用Java来处理身份验证弹出与硒的webdriver


原来的答案:

这不是由硒处理得非常好。


您可以尝试使用http://username:password@example.com/yourpage

而不是仅仅http://example.com/yourpage

不过,据我所知,火狐仍然会弹出一个浏览器对话框,请求确认。


你可以试试机器人 ,如果你使用的是Java(或任何类似的工具,如AutoIt的 )。


你可以使用driver.manage().addCookie()如果你使用的webdriver。


或自定义FirefoxProfile一个已经通过了认证一次。



Answer 2:

我在这度过了天 - 从字面上。 想我的公司内部网络让过去的浏览器级别的认证,达到一个应用程序。 解决的办法是使用“unsername:密码@”在URL中组件, 但在登录URL的末尾添加斜线

所以总的登录网址看起来像这样(请注意“/”后yourpage):

HTTP://用户名:password@example.com/yourpage/

工程与的Watir,水豚和硒的webdriver。



Answer 3:

我已经在网络上读到的一切对我没有帮助。 因此作出要求,如在此之前:

driver.get(url);

你必须运行这样一个新的线程:

RunScript runScript = new RunScript();
runScript.start();

在这种情况下,你可以自由地输入登录名和密码对follwing类的另一个线程

public class RunScript extends Thread {

@Override
public void run() {
    try {
        File file = new File("D:\\jacob-1.18-x86.dll");
        System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
        AutoItX autoIt = new AutoItX();
        Thread.sleep(2000);
        autoIt.winActivate("yourWindowName", "");
        autoIt.winWaitActive("yourWindowName");
        if (autoIt.winExists("yourWindowName")) {
            autoIt.send("username{TAB}", false);
            autoIt.send("password{Enter}", false);
            }
        }
    } catch (InterruptedException ex) {
        //
    }
}
}


Answer 4:

您可以使用Java Robot类与硒2 /硒的webdriver使用Firefox

WebDriver driver = new FirefoxDriver();
    driver.get("http://localhost:9990");

    WebElement myDynamicElement = driver.findElement(By.id("app"));

    Alert alert = driver.switchTo().alert();


    try {
        Robot robot = new Robot();
        alert.sendKeys("username");

        robot.keyPress(KeyEvent.VK_TAB);//go to password feild

        robot.keyPress(KeyEvent.VK_P);
        robot.keyPress(KeyEvent.VK_A);
        robot.keyPress(KeyEvent.VK_S);
        robot.keyPress(KeyEvent.VK_S);

        robot.keyPress(KeyEvent.VK_ENTER);


        } catch (AWTException e) {
        e.printStackTrace();
        }

    }

使用硒与机器人
http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/Robot.html



Answer 5:

通过自动它,sikuli等只是浪费你的时候,你会在你的CI解决方案运行,使用多种类型的浏览器/操作系统/版本/决议等所有的黑客

正确地做到这一点是确定的认证实际方法和使用REST协议例如执行登录。

我用它来获得JSESIONID cookie并把它插入到硒驱动程序。 上提示:去DOMIAN第一的非退出网址,然后设置cookie,然后去到所需的网址 - 您登录项。

使用方法:休息客户端身份验证,以获得JSESSION ID

而有了这个信息:

browser().navigate(foo.getUrl()+"non-exiting-url");

//the information got from the rest client login:
Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure, isHttpOnly);

try {
    driver.manage().addCookie(cookie);
} catch (Exception e) {
    System.out.println(e.toString());
}

browser().navigate(foo.getUrl());


Answer 6:

您可以使用自动脚本IT来处理这个问题

WinWaitActive("[CLASS:Chrome_WidgetWin_1]", "", time)
Send("user")
Send("{TAB}")
Send("pass")
Send("{ENTER}")


Answer 7:

使用Chrome 70和其他版本:

http://username:password@example.com/yourpage


文章来源: Handling Browser Authentication using Selenium