问题描述
版本
- 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
我关注了以下文档:
- https://getopentest.org/reference/javascript-api.html#includeincludesource
- https://getopentest.org/docs/scripting-support.html#external-script-files
但是我尝试过的所有组合似乎都不起作用,我想我缺少了一些东西:(
我将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;