首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BrowserStack自动+云托管CI的IP附加白名单测试站点

使用BrowserStack自动+云托管CI的IP附加白名单测试站点
EN

Stack Overflow用户
提问于 2018-01-04 12:27:57
回答 1查看 2.8K关注 0票数 0

我有一个测试系统(各种网页/ web应用程序),它托管在一个只能通过计算机访问的环境中,其IP地址是白色的。我控制着白名单。

我们的CI系统是云托管的(Gitlab),因此VM可以根据需要动态拆分,作为构建管道的一部分运行自动集成测试。

这些测试使用BrowserStack自动化来运行基于Selenium的测试,这意味着访问测试环境的BrowserStack自动化驱动请求的源IP地址是动态的,因为BS是云托管的。此外,调用/调用BrowserStack自动化的测试运行程序机器的IP地址也是动态的。

整个系统在测试环境的IP白列表引入之前运行良好。由于启用了白列表,所以BrowserStack测试不能再访问环境URL(因为不能白列出动态IP)。

我一直试图让CI驱动的测试再次使用BS的“本地测试”特性,这里概述了https://www.browserstack.com/local-testing

我已经设置了一个具有静态IP地址的专用Linux (云托管)。我已经安装并正在运行BrowserStackLocal.exe二进制文件,使用我们的BS密钥。它启动良好,并表示已通过网络套接字连接到BrowserStack。我的理解是,这将导致来自CI / BrowserStack自动化测试的所有http(s)等请求通过独立的计算机(通过BS云)路由,从而使它的静态IP地址成为测试环境中看到的请求的来源。这个IP地址是白列的。

这是在专用/静态IP机器上运行的命令:

代码语言:javascript
复制
BrowserStackLocal.exe --{access key} --verbose 3

我也尝试了以下几点,但没有明显的区别:

代码语言:javascript
复制
BrowserStackLocal.exe --{access key} --force-local --verbose 3

但是,这似乎行不通吗?如果我试图通过BrowserStack直接访问测试env,或者通过BS自动化,则通过“实时”测试。在这两种情况下,http(s)请求所有超时,并且不能访问我们的测试环境URL。而且,即使在BrowserStackLocal.exe进程上启用了--详细的3日志记录级别,当我尝试以各种方式运行测试时,我也没有看到任何请求被记录在独立/静态IP机器上。

所以我想知道这是否解决这个问题的正确方法?我是不是误解了该怎么做?我是否需要在调用BS自动化的同一台CI转轮机上运行BrowserStackLocal.exe?这将是有问题的,因为这些也有动态IP(目前)。

提前感谢您的帮助!

编辑/更新:我设法让这个工作!(有点)-只是有点慢。如果我在现有的专用/静态IP服务器上运行以下命令:

代码语言:javascript
复制
BrowserStackLocal.exe --key {mykey} --force-local --verbose 3

然后在另一台机器上(就像我的开发笔记本电脑),如果我点击BS web驱动服务器http://hub-cloud.browserstack.com/wd/hub,并访问站点http://www.whatsmyip.org/来查看IP地址的返回,它就会(最终)返回我的静态IP机器地址!但问题是,这是相当缓慢的- 20-30秒的一个网站命中,所以仍然在寻找替代解决方案。注意,要使测试代码正常工作,您的测试代码必须将“本地”浏览器堆栈功能标志设置为'true‘--例如对于Node.js:

代码语言:javascript
复制
  // Input capabilities
  var capabilities = {
    'browserstack.local' : 'true'
  }

更新2:降低本地二进制文件上详细的日志记录级别(或者完全关闭标记)似乎可以改善情况--我现在对每个请求都有5-10秒的响应时间。这可能是必须的。但这确实像描述的那样有效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-05 00:19:51

解决方案:我设法让这件事成功了--只是有点慢。如果我在现有的专用/静态IP服务器上运行以下命令(请注意,添加详细日志似乎会使事情更慢,所以现在使用的是非详细标记):

代码语言:javascript
复制
BrowserStackLocal.exe --key {mykey} --force-local

然后在另一台机器上(如我的开发笔记本电脑),如果我访问BS web驱动服务器http://hub-cloud.browserstack.com/wd/hub,并访问站点http://www.whatsmyip.org/以查看返回的IP地址,它确实返回了我的静态IP机器地址。注意,要使测试代码正常工作,您的测试代码必须将“本地”浏览器堆栈功能标志设置为'true‘--例如对于Node.js:

代码语言:javascript
复制
  // Input capabilities
  var capabilities = {
    'browserstack.local' : 'true'
  }

所以虽然有点慢,但这可能是必须要做的。但这确实像描述的那样有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48095349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档