如何解决如何在 QAF 中设置代理
我需要在我的 QAF 测试方法中设置代理。下面的代码在没有 QAF 的情况下工作正常。如何与 QAF 实现设置相同?
// @Test
public void sampletest() {
Proxy proxy = new Proxy();
proxy.setHttpProxy("localhost:8080");
proxy.setSslProxy("localhost:8080");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("proxy",proxy);
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
options.addArguments("--ignore-certificate-errors");
capabilities.setCapability(ChromeOptions.CAPABILITY,options);
@SuppressWarnings("deprecation")
ChromeDriver driver = new ChromeDriver(capabilities); // Here opening new window and able
to hit my localhost:8080
//i need to use following QAF methods which also needs to trigger my localhost
get("http://demo.rapidtestpro.com/login.PHP");
sendKeys("1234567","//*[@id='accno']");
sendKeys("password123","//*[@id=\"pass\"]");
System.out.println("Exit in sample test");
}
我也尝试在 application.properties 文件中设置代理,如下所示
system.http.proxyHost=localhost
system.http.proxyPort=8080
也在 Testngconfig.xml 文件中尝试过,如下所示
<test name="java Test" enabled="true">
<parameter name="driver.name" value="chromeDriver"/>
<parameter name="system.http.proxyHost" value="localhost"/>
<parameter name="system.http.proxyPort" value="8080"/>
在 localhost:8080 中没有触发任何东西。
解决方法
根据您的工作代码,您希望为使用功能的驱动程序设置代理。当您使用 qaf 时,您可以以不同的方式提供驱动程序功能。最简单的方法是使用所需功能的 json 值设置适当的属性。在您的情况下,它将如下所示:
driver.name=chromeDriver
chrome.additional.capabilities={"goog:chromeOptions":{"args":["start-maximized","--ignore-certificate-errors"]},"proxy":{"httpProxy":"localhost:8080","sslProxy":"localhost:8080"}}
如果你想为所有浏览器设置代理功能:
driver.name=<driver name>
#additional capabilities for any driver
driver.additional.capabilities={"proxy":{"httpProxy":"localhost:8080","sslProxy":"localhost:8080"}}
#additional capabilities only for chrome
chrome.additional.capabilities={"goog:chromeOptions":{"args":["start-maximized","--ignore-certificate-errors"]}}
如果您不知道功能的 json 表示是什么,您可以在控制台中打印并参考。例如,带有您所引用的功能的打印 json 值的代码:
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.setHttpProxy("localhost:8080");
proxy.setSslProxy("localhost:8080");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("proxy",proxy);
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
options.addArguments("--ignore-certificate-errors");
capabilities.setCapability(ChromeOptions.CAPABILITY,options);
System.out.println(JSONUtil.toString(capabilities.toJson()));
}
另一种方法是使用 driver listener,您可以在 void beforeInitialize(Capabilities capabilities)
中附加功能例如:
void beforeInitialize(Capabilities capabilities){
Proxy proxy = new Proxy();
proxy.setHttpProxy("localhost:8080");
proxy.setSslProxy("localhost:8080");
DesiredCapabilities capabilities = (DesiredCapabilities)capabilities;
capabilities.setCapability("proxy",proxy);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。