当前位置: 首页 > 知识库问答 >
问题:

使用Selenium和Browserstack配置Jenkins构建

堵乐
2023-03-14

社区中是否有人成功地使用Browserstack作为云提供商在Jenkins中创建了Selenium build,同时需要在防火墙后面建立本地测试连接?

我可以肯定地说,正如我所做的那样,Saucelabs在连续部署环境中使用Sauce Jenkins插件执行构建非常容易。然而,我不能对Browserstack说同样的话。我所在的组织目前使用Browserstack,虽然他们的服务确实支持使用二进制应用程序进行自动测试,但我发现Jenkins很麻烦。我需要绝对确保Browserstack不是可行的解决方案,如果是的话。我喜欢Saucelabs和他们的组织提供的东西,但如果Browserstack有效,我不想在不需要的情况下切换。

Browserstack文档指示您使用一些可用选项运行命令,以便在执行之前创建本地连接。

nohup ./[binary file] -localIdentifier [id] [auth key] localhost,3000,0 &

我已经添加了上述语句作为预构建步骤shell命令。我还必须添加“nohup”,因为一旦二进制文件创建了一个成功的连接,构建就永远不会真正启动,因为我没有如下面的输出所示退出。

BrowserStackLocal v3.5

您现在可以在我们的远程浏览器中访问您的本地服务器。

按Ctrl-C退出

通常,我可以顺利地执行第一个构建,而不会出现问题。使用相同命令的后续生成配置从不连接。显示上述消息,但在测试执行期间,Browserstack报告未建立本地测试连接。这让我很困惑。

为了让您更好地了解正在执行的内容,我为各种项目套件和浏览器组合提供了15种构建配置。存在两个Jenkins执行器,我在任何给定时间都有5个以上的Browserstack VM可用。当关联的项目代码推送到登台服务器时,其中五个构建将自动开始执行,填满两个执行者。其中一个开始和结束都很好。其他人都不会,因为Browserstack报告本地测试不可用。

Saucelabs显然已经通过他们的插件解决了这个问题,这很好。如果Browserstack需要shell命令来创建本地测试连接,那么我一定是做错了什么,无序了等等。

环境:

  • Java 7
  • 硒2.45
  • JUnit 4.11
  • Maven 3.1.1
  • 诱惑1.4.10
  • 詹金斯1.5

有人能发布一些在连续测试环境中使用浏览器堆栈同时使用多个并行测试执行的信息,并告诉我每个构建是如何配置的吗?

谢谢,

共有3个答案

鱼志学
2023-03-14

将BrowserStack与Jenkins集成有点棘手,但别担心,这是完全可行的:-)

根据Umang的建议,BrowserStackLocal客户端需要作为后台进程启动,这也是SauceLabs插件的工作原理。

问题是,当Jenkins看到您自己启动守护进程而不是通过插件启动守护进程时,它会杀死它们。这就是为什么你需要说服它。

在本文中,我已经描述了如何一步一步地进行,但如果您使用的是管道插件,则可以使用以下脚本作为起点:

node {
    with_browser_stack 'linux-x64', {
        // Execute tests: here's where a step like
        //  sh 'mvn clean verify'
        // would go
    }
}

// ----------------------------------------------
def with_browser_stack(type, actions) {
    // Prepare the BrowserStackLocal client
    if (! fileExists("/var/tmp/BrowserStackLocal")) {
        sh "curl -sS https://www.browserstack.com/browserstack-local/BrowserStackLocal-${type}.zip > /var/tmp/BrowserStackLocal.zip"
        sh "unzip -o /var/tmp/BrowserStackLocal.zip -d /var/tmp"
        sh "chmod +x /var/tmp/BrowserStackLocal"
    }

    // Start the connection
    sh "BUILD_ID=dontKillMe nohup /var/tmp/BrowserStackLocal 42MyAcc3sK3yV4lu3 -onlyAutomate > /var/tmp/browserstack.log 2>&1 & echo \$! > /var/tmp/browserstack.pid"

    try {
        // Execute tests
        actions()
    }
    finally {
        // Stop the connection
        sh "kill `cat /var/tmp/browserstack.pid`"
    }
}

当然,您需要用自己的密钥替换假访问密钥(42MyAcc3sK3yV4lu3),或者通过环境变量提供。

这里最重要的部分是BUILD\u ID,因为Jenkins ProcessTreeKiller在决定是否终止守护进程时会寻找这个ID。

希望这有帮助!

柴飞扬
2023-03-14

这是Umang代表BrowserStack回复。

首先,您正在使用正确的命令来设置本地测试连接。尽管您不需要指定“localhost,3000,0”的详细信息。我们还建议您在启动连接时使用“-forcelocal”参数。命令应如下所示:

诺胡普/[二进制文件][身份验证密钥]-localIdentifier[id]-forcelocal

参数“-forcelocal”将通过您的IP地址路由所有流量。此外,在运行测试之前启动连接的过程是正确的。

但是,在这里我想确认您在创建连接时指定的“id”。正如您所分享的,有15个构建配置,我知道每个构建都指定了不同的“id”。请确保设置本地测试连接时指定的“id”和测试中指定的“id”(“browserstack.local标识符”=“id”)是相同的。否则,您将收到错误“[browserstack.local]设置为true,但通过BrowserStack进行的本地测试未连接”

百里嘉泽
2023-03-14

我最近研究了使用Selenium的BrowserStack,BrowserStack插件使这项任务变得更加简单。

特征

  • 在全局或每个构建作业中管理您的BrowserStack凭据。
  • 设置并拆除BrowserStack Local以测试内部、开发或暂存环境。
  • 在Jenkins工作结果中嵌入BrowserStack自动化报告。

更容易全面集成。

 类似资料:
  • 我需要使用自动代理配置URL设置浏览器的代理,如下面的屏幕截图所示。 我正在尝试使用Selenium和Browserack作为测试环境来实现这一点。 设置代理,如下所示。 代理代理=new Proxy(); proxy.setProxyAutoconfig Url("http://pokgsa.ibm.com/gsa/pokgsa/home/j/m/jmit/web/public/proxy.pa

  • 我如何告诉Jenkins使用系统安装的Maven? 为什么它要求MAVEN_HOME而不是m2_home?为什么它不显示当前的系统Maven?当构建运行时,它会给出一个BS错误: 解析POM错误:未能解析POM org.apache.maven.project.project.projectBuildingException:在处理POM时遇到一些问题:[FATAL]不可解决的父POM:未能在ht

  • 问题内容: 我似乎在尝试将Jenkins(Ubuntu的EC2 AWS实例)与Bitbucket链接时陷入困境。 每当我尝试构建项目时(我在Jenkins上安装了git插件),我都会得到… 很好- 看起来它正在尝试通过ssh,但是找不到密钥。所以我试图生成密钥,在我有文件的情况下,但是根据这里的文档… https://confluence.atlassian.com/display/BITBUCK

  • 我使用及其构建定义使用Selenium运行端到端测试。 更具体地说,我将web应用程序部署到测试环境中,然后使用基于Selenium的库针对该测试URL运行测试。对于CI,我使用PhantomJS或Google Chrome无头。 为了清楚起见,这样的测试是:“打开URL/单击链接/断言URL已更改。” 我的问题是--有没有可能为此目的使用BrowserStack?如果是的话,你能给我指一些教程或

  • 问题内容: 我正在使用Ansible来配置服务器,我安装了Jenkins 2.0,但是当我打开Web UI时,它具有启动配置。我该如何使用Ansible或shell或jenkins-cli。CentOS 7,Ansible 2.0.1.0。所以, 从http://pkg.jenkins-ci.org/redhat-rc/jenkins-2.0-1.1.noarch.rpm rpm 安装Jenkin

  • Jenkins 介绍 官网:http://jenkins-ci.org/ 官网插件库:https://plugins.jenkins.io/ 官网下载:https://jenkins.io/download/ 官网帮助中心:https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins Docker 下安装 Jenkins 先禁用 selinux 编