【问题标题】:Multiple protractor instances多个量角器实例
【发布时间】:2019-08-06 19:54:40
【问题描述】:

我在我们公司的 Intranet 上有一个 Web 服务器,它允许用户提交 URL 以使用 Protractor 进行测试。

所有测试都将在此服务器上运行,方法是让 PHP 为每个提交的 URL 编写一个 config.js 文件,并使用shell_exec 运行protractor conf[generated-id].js

我想一次运行多个量角器测试,以便更快地处理 URL 队列。

这些 URL 代表我们产品的不同版本,因此它们非常相似。

以这种方式同时多次运行量角器是否安全?测试是否可能会以某种方式相互干扰?

我对 Selenium Grid 不感兴趣,因为我希望所有测试都在这台机器上运行(一次 2-3 个,所以我想保持简单)。

谢谢

【问题讨论】:

    标签: angularjs selenium protractor


    【解决方案1】:

    据我了解,测试应该是自包含的,同时运行多个实例应该不会导致问题。

    此答案的其余部分做出以下假设:

    • 你没有设置directConnect
    • 在每个浏览器上执行的测试都是一样的
    • 创建的conf文件的内容除了URL是一样的

    有几件事需要了解:

    1. 如果配置seleniumAddress: 'http://localhost:4444/wd/hub',中没有指定selenium服务器地址,那么它将自动启动并在完成时关闭。
    2. selenium 服务器启动的每个浏览器都有一个关联的唯一 selenium 会话 ID。
    3. 在自动化测试期间发送到浏览器的所有操作实际上都会与目标浏览器的会话 ID 一起发送到 selenium 服务器,该命令类似于以下/session/:sessionId/element/:id/click。 webdriver 背后的底层技术是the webdriver wire protocol,它确保命令只到达所需的浏览器。
    4. Selenium 服务器可以随时拥有多个活动浏览器。

    也就是说,我想知道是否可能没有更简单的合适方法,而是将 URL 作为参数传递。您的测试将使用browser.get(browser.params.targetURL),而您的运行命令将是protractor conf.js --params.targetURL www.URLToUse.com

    但是,如您的问题所示,如果 URL 已提交并且只是排队等待稍后运行,那么您可以编写一个数据驱动的测试,该测试将遍历 URL 列表并在每个 URL 上运行相同的测试。

    【讨论】:

    • 感谢您的信息。关于将 URL 作为参数发送,我在尝试为执行报告等的第三方插件指定参数时遇到了问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多