使用WebDriver的Selenium代理身份验证示例

什么是代理?

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

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

此过程称为“内容过滤”,最常用于教育机构、公司办公室等。内容过滤可以在代理的帮助下轻松完成。

在Internet上,代理可以实现为独立的服务器,它位于客户端计算机和实际的Web或数据库服务器之间进行响应。

在本教程中,将了解

  • 什么是代理?
  • SOCKS和HTTP代理之间的区别
  • Chrome中使用Selenium实现HTTP代理认证的2种方法
  • 使用AutoIT工具
  • 使用告警

SOCKS和HTTP代理之间的区别

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

Chrome中使用Selenium实现HTTP代理认证的2种方法

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

  • 使用AutoIT工具
  • 使用告警

使用AutoIT工具

Auto IT是用于Windows桌面自动化的第三方工具。由于Selenium只处理基于Web的弹出窗口和窗口,因此使用Selenium无法处理操作系统控件。

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

要使用AutoIT,需要在本地计算机上下载并安装AutoIT软件。

本文介绍了AutoIT的下载安装。

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

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

在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://www.itxiaonv.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处理密码告警 代理身份验证成功屏幕

使用alert

告警是Selenium Web驱动程序提供的简单内置功能。可以使用Selenium Web驱动程序处理代理身份验证弹出窗口,方法是借助Send Key方法切换到HTTP代理身份验证。

示例:

测试场景:

处理网站上的HTTP proxy身份验证弹出窗口:http://www.itxiaonv.com/test/basic_auth.php,使用Selenium web driver中的Alerts。

源代码示例:

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://www.itxiaonv.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属性设置为指向chromedriver.exe文件的位置来实例化Chrome驱动程序的实例
  • 然后,通过将url作为参数传递给 driver.get() 方法来打开所需网站的url
  • 一旦打开URL,将切换到用户名告警并发送username-guru99。然后使用alert.Accept方法单击告警上的OK按钮
  • 然后,将切换到密码告警并发送密码-guru99。然后使用alert.Accept方法单击告警上的OK按钮

总结

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

IT赶路人

专注IT知识分享