Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 包括外部文件';signal.min.js';窗口未定义_Javascript_Selenium_Opentest - Fatal编程技术网

Javascript 包括外部文件';signal.min.js';窗口未定义

Javascript 包括外部文件';signal.min.js';窗口未定义,javascript,selenium,opentest,Javascript,Selenium,Opentest,版本 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.t

版本

  • 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

有关测试的一个示例:

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可以在以下位置找到:

,因此在经过大量的尝试和错误之后,我设法使某些东西工作起来。我从来没有得到脚本包括在OpenTest中工作。我想这是因为浏览器还没有打开时会出现问题,因此
窗口将只是未定义。因此,基本上您只能包含不使用DOM的脚本

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

description: My Test
actors:
  - actor: ACTOR1
    segments:
      - segment: 1
        actions:
          - description: Initialize Browser
            action: org.getopentest.selenium.NavigateTo
            args:
              url: $data("config").someExternalUrlIsAlive
              
          - description: Get Test Page File-Path
            script: |
              var File = Java.type("java.io.File");
              var URLEncoder = Java.type("java.net.URLEncoder");
              var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");

              var testPage = new File("..\\test-repo\\scripts\\testpage.html");
              var testPageUrl = testPage.getAbsolutePath();

              var argument = $data("config").someProperty;
              var argumentUrlEncoded = URLEncoder.encode(argument, StandardCharsets.UTF_8.toString());

              $sharedData.testpage = testPageUrl + "?arg=" + argumentUrlEncoded;
              $log("The test-page path is " + $sharedData.testpage);

          - description: Navigate to Test Page
            action: org.getopentest.selenium.NavigateTo
            args:
              url: $sharedData.testpage

          - description: Start Test
            action: org.getopentest.selenium.Click
            args:
              locator: { id: btnTest }

          - description: Give the test some time to complete
            script: |
              var Thread = Java.type("java.lang.Thread");
              Thread.sleep(3000); // sleep 3 seconds.

          - description: Read Test Page Result
            action: org.getopentest.selenium.GetElements
            args:
              locator: { id: txtResult }
              $localData:
                resultElements: $output.elements

          - description: Validate the Test Page Results
            script: |
              var txtResult = $localData.resultElements[0];
              var testResult = txtResult.getAttribute("value")

              if (testResult !== "200") {
                $fail(
                  $format(
                    "We expected a valid connection result, but we got: {0}",
                    testResult
                  )
                );
              }
description: My Test
actors:
  - actor: ACTOR1
    segments:
      - segment: 1
        actions:
          - description: Initialize Browser
            action: org.getopentest.selenium.NavigateTo
            args:
              url: $data("config").someExternalUrlIsAlive
              
          - description: Get Test Page File-Path
            script: |
              var File = Java.type("java.io.File");
              var URLEncoder = Java.type("java.net.URLEncoder");
              var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");

              var testPage = new File("..\\test-repo\\scripts\\testpage.html");
              var testPageUrl = testPage.getAbsolutePath();

              var argument = $data("config").someProperty;
              var argumentUrlEncoded = URLEncoder.encode(argument, StandardCharsets.UTF_8.toString());

              $sharedData.testpage = testPageUrl + "?arg=" + argumentUrlEncoded;
              $log("The test-page path is " + $sharedData.testpage);

          - description: Navigate to Test Page
            action: org.getopentest.selenium.NavigateTo
            args:
              url: $sharedData.testpage

          - description: Start Test
            action: org.getopentest.selenium.Click
            args:
              locator: { id: btnTest }

          - description: Give the test some time to complete
            script: |
              var Thread = Java.type("java.lang.Thread");
              Thread.sleep(3000); // sleep 3 seconds.

          - description: Read Test Page Result
            action: org.getopentest.selenium.GetElements
            args:
              locator: { id: txtResult }
              $localData:
                resultElements: $output.elements

          - description: Validate the Test Page Results
            script: |
              var txtResult = $localData.resultElements[0];
              var testResult = txtResult.getAttribute("value")

              if (testResult !== "200") {
                $fail(
                  $format(
                    "We expected a valid connection result, but we got: {0}",
                    testResult
                  )
                );
              }