如何使用Java绕过或处理selenium webdriver中的Windows身份验证

时间:2017-10-06 09:34:04

标签: java eclipse google-chrome selenium

我需要访问需要Windows身份验证的Web应用程序。 有什么办法可以绕过这个Windows身份验证,还是有办法解决这个问题。

Selenium webdriver版本 - <form name="datepickerForm" class="form-inline" role="form"> <!-- Basic example --> <div class="form-group" ng-class="{'has-error': datepickerForm.date.$invalid}"> <label class="control-label"><i class="fa fa-calendar"></i> Date <small>(as date)</small></label> <input type="text" class="form-control" ng-model="selectedDate" name="date" bs-datepicker> </div> <!-- Custom example --> <div class="form-group" ng-class="{'has-error': datepickerForm.date2.$invalid}"> <label class="control-label"><i class="fa fa-calendar"></i> Date <small>(as number)</small></label> <input type="text" class="form-control" ng-model="selectedDateAsNumber" data-date-format="yyyy-MM-dd" data-date-type="number" data-min-date="02/10/86" data-max-date="today" data-autoclose="1" name="date2" bs-datepicker> </div> <hr> <!-- Date range example --> <div class="form-group"> <label class="control-label"><i class="fa fa-calendar"></i> <i class="fa fa-arrows-h"></i> <i class="fa fa-calendar"></i> Date range <small>(dynamic)</small></label><br> <div class="form-group col-xs-6"> <input type="text" class="form-control" ng-model="fromDate" data-max-date="{{untilDate}}" placeholder="From" bs-datepicker> </div> <div class="form-group col-xs-6"> <input type="text" class="form-control" ng-model="untilDate" data-min-date="{{fromDate}}" placeholder="Until" bs-datepicker> </div> </div> </form>

Eclipse IDE for Java Developers版本:selenium-java-3.6.0

浏览器 - Oxygen.1 Release (4.7.1)最新

2 个答案:

答案 0 :(得分:1)

解决方案1:在URL中提供用户名和密码

WebDriver driver = new FirefoxDriver();
String baseUrl=”http://” + “USERNAME” + “:” + “PASSWORD” + “@” + “xyz.com”;
driver.get(baseUrl + “/”);

解决方案2:使用Robot Class在身份验证警告弹出窗口中输入用户ID和密码。这仅在弹出窗口时“用户名”字段处于焦点时才有效。

答案 1 :(得分:0)

警报方法authenticateUsing()允许您跳过Http基本身份验证框。

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

OR

Selenium Java代码:

driver.get("http://USERNMAE:PASSWORD@YOUR_URL");