如何处理代理身份验证 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 代理身份验证弹出窗口
代码输出:
使用警报
警报是简单的内置功能,由 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 网络驱动