在公司代理(Java)之后使用Selenium RemoteWebDriver
我试图在一些远程自动化服务(Sauce Labs,Browserstack等)上运行Selenium测试,并遇到通过我的公司防火墙攻击其API的问题。
请注意,我要测试的应用程序 此防火墙后面,可以公开访问。
DesiredCapabilities caps = DesiredCapabilities.internetExplorer();caps.setCapability("platform", "Windows 7");
caps.setCapability("version", "9.0");
caps.setCapability("idleTimeout", "300");
caps.setCapability("name", "Invitation Tests");
driver = new RemoteWebDriver(new URL("https://user:key@saucelabs.com), caps);
问题似乎是Selenium的管道将url中的user:key解释为代理凭据,因此它永远不会离开我们的网络。是否有任何特定的技巧来配置它?似乎在后台使用了Apache
HttpClient。
我 认为
我们正在使用NTLM代理,它似乎使用了基本身份验证。可能是来自这里的相同问题:https
:
//code.google.com/p/selenium/issues/detail?id=7286
回答:
您链接到的Google代码问题确实确实是原因。请注意,此问题已解决,因此您现在可以在创建RemoteWebDriver时注入自己的CommandExecutor实现。
具体来说,您可能会执行以下操作:
- 编写一个自定义实现的
org.openqa.selenium.remote.http.HttpClient.Factory
行为类似于https://github.com/SeleniumHQ/selenium/blob/master/java/client/src/org/openqa/selenium/remote/internal/ApacheHttpClient.java的实现,但允许您注入HttpClient
实例(或HttpClientFactory
实例,如果您想对其进行子类化)。这是一个非常简单的界面,并且是要复制的简单实现,因此这应该很容易。 org.apache.http.impl.client.BasicCredentialsProvider
为不同的主机创建一个具有不同凭据的实例(org.apache.http.auth.AuthScope
有关详细信息,请参阅)。- 用于
org.apache.http.impl.HttpClientBuilder
与您的凭据提供程序一起构建客户端。 - 构造一个实例
HttpCommandExecutor
,传入您的自定义工厂实例并注入您的客户。 - 构造一个实例
RemoteWebDriver
,传入命令执行程序。
以上是 在公司代理(Java)之后使用Selenium RemoteWebDriver 的全部内容, 来源链接: utcz.com/qa/415669.html