如何使用Selenium WebDriver with Java发送HTTP请求代码



我已经使用Selenium WebDriver编写了测试,但我在网站身份验证方面遇到了问题。对于Chrome和Firefox,我使用了来自URL的基本身份验证:

WebDriver.get("https://u:p@example.com/");

工作正常,它绕过身份验证弹出窗口,我的测试进入网站。

在资源管理器和边缘中,我无法使用此功能,因为它已被禁用。我尝试使用机器人,它适用于资源管理器,但在 Edge 中,测试卡在身份验证窗口中,它不会向用户名或密码字段发送任何密钥。

WebDriver.get("https://example.com/");
Robot robot = new Robot();
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_U);
Thread.sleep(100);
robot.keyPress(KeyEvent.VK_TAB);
Thread.sleep(100);
robot.keyPress(KeyEvent.VK_P);
Thread.sleep(100);
robot.keyPress(KeyEvent.VK_TAB);
Thread.sleep(100);
robot.keyPress(KeyEvent.VK_ENTER);

现在我尝试了一个 http 请求:

HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("https://example.com/");
httpGet.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials("u", "p"), "UTF-8", false));
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity responseEntity = httpResponse.getEntity();
System.out.println(httpResponse);
WebDriver.get("https://example.com/");

我得到这样的回应:

HTTP/1.1 200 成功登录

但是当 Web 驱动程序转到页面时,我仍然会收到身份验证请求。

如何绕过身份验证窗口并在 Edge 和资源管理器中登录网站,有什么想法吗?

这在

IE中适用于我处理登录弹出窗口。试一试。它基本上等待登录框出现,然后尝试使用该框登录。相当简单。

WebDriverWait wait = new WebDriverWait(driver, 10);
Alert login = wait.until(ExpectedConditions.alertIsPresent());
login.authenticateUsing(new UserAndPassword("user","pass"));

最新更新