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
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
)
);
}