如何处理代理身份验证 Selenium 网络驱动程序

什么是代理?

代理充当客户端发送请求和服务器响应之间的中介。代理的主要用途是维护多个交互系统之间的隐私和封装。

代理还可以充当客户端和 Web 服务器之间的防火墙,为 Web 增加另一层安全性。当客户端使用的网站必须根据网站内容标记为允许或阻止时,代理尤其有用。

此过程称为“内容过滤”,最常用于教育机构、公司办公室等。借助代理可以轻松完成内容过滤。在互联网上,代理可以实现为位于客户端计算机和实际响应的 Web 或数据库服务器之间的单独服务器。

SOCKS 和 HTTP 代理之间的区别

袜子 HTTP代理
SOCKS 代表安全套接字。它通常用作客户端和服务器之间的防火墙 HTTP 代理也可以用作客户端和服务器之间的防火墙,但只能用于 HTTP 请求
SOCKS 不解释正在交换的数据 HTTP 代理解释客户端和服务器之间交换的数据
性能较慢 与 SOCKS 相比,性能更佳

如何处理代理 Selenium Chrome 中的 Webdriver

HTTP 代理身份验证 Selenium Chrome 中可以使用以下方法处理

  • 使用 AutoIT 工具
  • 使用警报

使用 AutoIT 工具

Auto IT 是用于 Windows 桌面自动化的第三方工具。由于 Selenium 仅处理基于 Web 的弹出窗口和窗口,无法使用 Selenium.

这需要使用外部第三方工具(如 Auto IT)进行集成 Selenium。为此,Auto IT 最常用于处理网站上的文件上传和文件下载。

要使用 AutoIT,您需要在我们的本地机器上下载并安装 AutoIT 软件。

下载并安装 AutoIT 的内容包含在 刊文.

打开程序 - Autoit 工具 - SciTE 脚本编辑器,在 Autoit 编辑器中添加下面提到的 AutoIt 脚本,然后在系统中将其保存为“ProxyAuthentication.au3”

编译该文件并将其转换为“ProxyAuthentication.exe”。

In Eclipse,将 Auto IT 文件添加到 Selenium 脚本并运行

以下是 HTTP 代理身份验证的 AutoIT 脚本

Send("guru99{ENTER}")
Send("guru99{ENTER}")

您需要传递 Auto IT 文件以供执行 Selenium webdriver 使用下面的代码

源代码:

package Guru99Demo;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class AutoITDemo {
    public static void main(String[] args) throws IOException {
        System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");;
        WebDriver driver = new ChromeDriver();
        driver.get("http://demo.guru99.com/test/basic_auth.php");
        //Passing the AutoIt Script to Selenium	
        Runtime.getRuntime().exec("D:\\Data_Personal\\ProxyAuthentication.exe");
    }
}

代码说明:

  • 第一步,通过设置系统属性来指向 chromedriver.exe 文件,初始化 Chrome 驱动程序实例
  • 在第二步中,您将初始化 Web 驱动程序的对象并使用 get 方法传递网站 URL
  • 最后,您将使用 AutoIT 脚本文件将用户名和密码传递给 HTTP 代理身份验证弹出窗口

代码输出:

使用 AutoIT 处理用户名警报
使用 AutoIT 处理用户名警报
使用 AutoIT 处理密码警报

使用 AutoIT 处理密码警报
代理身份验证成功屏幕

代理身份验证成功屏幕

使用警报

警报是简单的内置功能,由 Selenium web 驱动程序。您可以使用以下方式处理代理身份验证弹出窗口 Selenium 通过切换到 HTTP 代理身份验证警报并将用户名和密码直接传递给警报,可以实现 Web 驱动程序。借助发送密钥方法。

例如::

测试场景:

处理网站上的 HTTP 代理身份验证弹出窗口: https://demo.guru99.com/test/basic_auth.php 使用警报 Selenium 网络驱动程序。

源代码示例:

package Guru99Demo;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class AlertsDemo {
    public static void main(String args[]) throws IOException {
        System.setProperty("webdriver.chrome.driver", "D:\\Data_Personal\\Software\\chromedriver_win32\\chromedriver.exe");;
        WebDriver driver = new ChromeDriver();
        driver.get("http://demo.guru99.com/test/basic_auth.php");
        // Handling Username alert
        driver.switchTo().alert().sendKeys("guru99");
        driver.switchTo().alert().accept();
        // Handling Password alert
        driver.switchTo().alert().sendKeys("guru99");
        driver.switchTo().alert().accept();
    }
}

代码输出

代理身份验证已成功完成。

代码说明:

  • 最初,您通过设置 webdriver 属性来实例化 Chrome 驱动程序的实例,以指向 chromedriver.exe 文件的位置
  • 然后,通过将 URL 作为参数传递给 driver.get() 方法,打开所需网站的 URL
  • 打开 URL 后,您将切换到用户名警报并发送用户名 – guru99。然后使用 alert.accept 方法单击警报上的“确定”按钮
  • 然后,您将切换到密码警报并发送密码 – guru99。然后使用 alert.accept 方法单击警报上的“确定”按钮

总结

  • 代理充当客户端发送请求和服务器响应之间的中介。代理的基本用途是维护隐私和 封装 多个交互系统之间。
  • HTTP 代理身份验证 Selenium Chrome 中可以使用以下方法处理
  • 在网站 URL 中传递用户名和密码
  • 使用 AutoIT 工具
  • 使用警报
  • 在上述三种方法中,使用警报是处理 HTTP 代理身份验证的最有效方法 Selenium 网络驱动