当前位置: 首页 > 面试题库 >

在公司代理(Java)之后使用Selenium RemoteWebDriver

冯和硕
2023-03-14
问题内容

我试图在一些远程自动化服务(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,传入命令执行程序。


 类似资料:
  • 问题内容: 如何从公司代理后面通过RemoteWebDriver连接到硒网格,例如Br​​owserStack? 被测应用程序在代理之外,可以从BrowserStack免费访问。 问题答案: 我设法根据链接的问题中的可接受答案得到了一些解决方案,如果有人遇到相同问题,这是我的实现: 例 MyHttpClientFactory

  • 问题内容: 我需要通过npm下载几个软件包,但我们的公司代理配置是.pac文件(我在Windows上) 我已经尝试过 要么 但这行不通… 有什么建议吗?谢谢 问题答案: 我有一个非常类似的问题,我无法让npm在我们的代理服务器后面工作。 我的用户名的格式为“域\用户名”-代理配置中的斜杠导致出现正斜杠。因此输入: 然后运行此命令将返回以下内容: http:// domain / username:

  • 如何从公司代理后面通过RemoteWebDriver连接到selenium网格(如BrowserStack)? 被测应用程序位于代理之外,可以从BrowserStack自由访问。 这个使用Selenium RemoteWebDriver隐藏公司代理(Java)stackoverflow的问题问了同样的问题,但我无法按照公认的答案回答。

  • 我需要通过npm下载几个软件包,但我们的公司代理配置是。pac文件(我在windows上) 我已经试过了 或 但这行不通... 有什么建议吗?谢谢

  • 我正在尝试从我们的网络访问cloud Elasticsearch安装,这需要使用外部请求的代理。这是我用来传递Elasticsearch凭据和代理设置的代码片段: CredentialsProvider CredentialsProvider=new BasicCredentialsProvider();CredentialsProvider.SetCredentials(AuthScope.An

  • 问题内容: 通过设置代理,可以在公司防火墙后面使用任何方法。 我已经在npm和yarn上设置了代理,但这是我在尝试执行以下操作时看到的内容: 问题答案: 更新: 看来此错误已得到修复,在版本1.1.0中不再存在。 此问题是由以下事实造成的:毛线注册表在react- scripts中硬编码为:https : //github.com/facebookincubator/create-react-ap