包括外部文件'signalr.min.js'窗口未定义

问题描述

版本

  • OpenTest-版本1.2.2
  • ChromeDriver 85.0.4183.87

包括我需要的外部javascript文件总是会抛出类似的内容

Caused by: java.lang.RuntimeException: Failed to evaluate JavaScript code at line number 1. The script content was: 
$include(["signalr.min.js","signalr.tests.js"]);
...
Caused by: java.lang.RuntimeException: Failed to run script file signalr.min.js
...
Caused by: javax.script.ScriptException: ReferenceError: "window" is not defined in <eval> at line number 1

我关注了以下文档:

但是我尝试过的所有组合似乎都不起作用,我想我缺少了一些东西:(

我将actor.yml配置为chrome网络驱动程序,如下所示:

# Selenium options
selenium:
    # seleniumServerUrl: http://127.0.0.1:9515
    desiredCapabilities:
        browserName: chrome
        chromeOptions:
            args: [ --start-maximized ]
    chromeDriverExePath: C:/Webdrivers/chromedriver.exe
    chromeDriverExeArgs: [--start-maximized,--ignore-certificate-errors,--disable-popup-blocking,--disable-extensions-file-access-check,"--test-name","--disable-extensions","--disable-notifications","--disable-web-security","--disable-prompt-on-repost","--browser-test","--dom-automation","--enable-caret-browsing","--expose-internals-for-testing","--force-login-manager-in-tests" ]

所涉及的测试示例:

description: My Test
actors:
  - actor: ACTOR1
    segments:
      - segment: 1
        actions:
          - description: include external SignalR script files
            script: |
                $include(["signalr.min.js","signalr.tests.js"]);

          - description: Initialize SignalR Connection
            action: org.getopentest.selenium.ExecuteScript
            args:
              scriptArgs: $data("config").webChatUrl + $data("config").apiV1SignalRChathub
              script: |
                var hubUrl = arguments[0];
                SignalRConnectionTest(hubUrl);

signalr.min.js可以在以下网址找到:https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/3.1.7/signalr.min.js

解决方法

因此,经过大量的反复试验后,我设法使某些事情起作用。我从来没有在OpenTest中使用脚本(包括脚本)。我认为这是因为(尚未)打开浏览器时出现问题,因此.fixed-top只是未定义。因此,基本上,您只能包含不使用DOM的脚本...

我所做的是创建一个运行某些javascript的“本地” html页面,并通过一些检查从OpenTest yml调用该页面。这是我所做的一个例子:

position: sticky;