测试 JavaScript API

参加测试 是基于浏览器的 UWP 应用,它呈现锁定的在线评估以实现高风险测试,使教师能够专注于评估内容,而不是如何提供安全的测试环境。 为此,它使用任何 Web 应用程序都可以利用的 JavaScript API。 Take-a-test API 支持 SBAC 浏览器 API 标准 ,用于高风险常见核心测试。

有关应用本身的详细信息,请参阅 “参加测试”应用技术参考 。 有关故障排除的帮助,请参阅 使用事件查看器对 Microsoft Take a Test 进行故障排除

参考文档

"Take a Test API" 存在于以下命名空间中。 请注意,所有 API 都依赖于全局 SecureBrowser 对象。

Namespace Description
安全命名空间 包含用于锁定设备以进行测试并强制实施测试环境的 API。

安全命名空间

安全命名空间允许你锁定设备、检查用户和系统进程列表、获取 MAC 和 IP 地址以及清除缓存的 Web 资源。

方法 Description
锁定 锁定设备进行测试。
isEnvironmentSecure 确定锁定上下文是否仍应用于设备。
getDeviceInfo 获取有关运行测试应用程序的平台的详细信息。
examineProcessList(检查进程列表) 获取正在运行的用户和系统进程的列表。
关闭 关闭浏览器并解锁设备。
getPermissiveMode 检查宽松模式是否处于打开或关闭状态。
setPermissiveMode 打开或关闭宽松模式。
emptyClipBoard 清除系统剪贴板。
getMACAddress 获取设备的 MAC 地址列表。
getStartTime 获取测试应用启动的时间。
getCapability 查询某个功能是否已启用或禁用。
setCapability 启用或禁用指定功能。
isRemoteSession 检查当前会话是否已远程登录。
isVMSession 检查当前会话是否在虚拟机中运行。

lockDown

锁定设备。 还用于解锁设备。 测试 Web 应用程序将在允许学生开始测试之前调用此调用。 实施者需要采取任何必要的作来保护测试环境。 保护环境的步骤特定于设备,例如,包括禁用屏幕捕获、在安全模式下禁用语音聊天、清除系统剪贴板、进入展台模式、禁用 OSX 10.7+ 设备中的空格等方面。测试应用程序将在评估开始前启用锁定,并在学生完成评估并退出安全测试时禁用锁定。

语法
void SecureBrowser.security.lockDown(Boolean enable, Function onSuccess, Function onError);

参数

  • enable - 将 true 设置为在锁屏界面上方运行 Take-a-Test 应用程序,并应用在 Take-a-Test 应用程序技术参考中讨论的策略。 false 停止在锁屏上方运行 Take-a-Test,并关闭它,除非应用未锁定;在这种情况下没有效果。
  • onSuccess - [可选] 成功启用或禁用锁定后要调用的函数。 它必须采用形式 Function(Boolean currentlockdownstate)
  • onError - [可选] 如果锁定操作失败,则调用此函数。 它必须采用形式 Function(Boolean currentlockdownstate)

要求
Windows 10版本 1709 或更高版本


isEnvironmentSecure

确定锁定上下文是否仍应用于设备。 测试网页应用程序将在允许学生开始测试之前调用此功能,并在测试过程中定期调用。

语法
void SecureBrowser.security.isEnvironmentSecure(Function callback);

参数

  • callback - 此函数完成时要调用的函数。 它必须采用Function(String state)的格式,其中state是包含两个字段的 JSON 字符串。 第一个是 secure 字段,true 将仅在启用了所有必要的锁(或禁用了功能)以保证安全的测试环境时显示,并且自应用进入锁定模式以来,这些都没有被入侵。 另一个字段 messageKey包括特定于供应商的其他详细信息或信息。 此处的意图是允许供应商提供补充布尔 secure 标志的其他信息。
{
    'secure' : "true/false",
    'messageKey' : "some message"
}

要求
Windows 10版本 1709 或更高版本


getDeviceInfo

获取有关运行测试应用程序的平台的详细信息。 这用于扩充用户代理中可识别的任何信息。

语法
void SecureBrowser.security.getDeviceInfo(Function callback);

参数

  • callback - 此函数完成时要调用的函数。 它必须是形式为Function(String infoObj)的,infoObj是包含多个字段的 JSON 字符串。 必须支持以下字段:
    • os 表示 OS 类型(例如:Windows、macOS、Linux、iOS、Android 等)
    • name 表示 OS 发布名称(如果有)(例如 Sierra、Ubuntu)。
    • version 表示 OS 版本(例如:10.1、10 Pro 等)
    • brand 表示安全浏览器品牌(例如:OAKS、CA、SmarterApp 等)
    • model 表示仅移动设备的设备模型,而桌面浏览器中则为 null 或未使用。

要求
Windows 10版本 1709 或更高版本


检查进程列表(examineProcessList)

获取用户拥有的客户端计算机上运行的所有进程的列表。 测试应用程序将调用它来检查列表,并将其与测试周期期间被视为拒绝列出的进程列表进行比较。 应在评估开始时调用此调用,并在学生接受评估时定期调用此调用。 如果检测到拒绝列出的进程,应停止评估以保持测试完整性。

语法
void SecureBrowser.security.examineProcessList(String[] denylistedProcessList, Function callback);

参数

  • denylistedProcessList - 测试应用程序已列出拒绝的进程列表。
    callback - 找到活动进程后要调用的函数。 它必须采取如下形式:Function(String foundDenylistedProcesses) 其中 foundDenylistedProcesses 应为形式:"['process1.exe','process2.exe','processEtc.exe']"。 如果未找到在拒绝列表中的进程,则为空。 如果为 null,则表示原始函数调用中发生了错误。

言论 该列表不包括系统进程。

要求
Windows 10版本 1709 或更高版本


关闭

关闭浏览器并解锁设备。 当用户选择退出浏览器时,测试应用程序应调用此调用。

语法
void SecureBrowser.security.close(restart);

参数

  • restart - 此参数将被忽略,但必须提供。

备注 在 Windows 10 版本 1607 中,设备必须最初被锁定。 在更高版本中,无论设备是否已锁定,此方法都会关闭浏览器。

要求
Windows 10版本 1709 或更高版本


getPermissiveMode

测试 Web 应用程序应调用它以确定宽松模式是否处于打开或关闭状态。 在宽松模式下,浏览器预计将放宽其一些严格的安全挂钩,以允许辅助技术与安全浏览器配合使用。 例如,在宽松模式下,那些积极阻止其他应用程序界面覆盖其上的浏览器可能会希望放宽此限制。

语法
void SecureBrowser.security.getPermissiveMode(Function callback)

参数

  • callback - 此调用完成时要调用的函数。 它必须采用以下格式: Function(Boolean permissiveMode) 其中 permissiveMode 指示浏览器当前是否处于宽松模式。 如果它未定义或为 null,那么在获取操作中发生了错误。

要求
Windows 10版本 1709 或更高版本


setPermissiveMode

测试 Web 应用程序应调用此项以打开或关闭宽松模式。 在宽松模式下,浏览器预计将放宽其一些严格的安全挂钩,以允许辅助技术与安全浏览器配合使用。 例如,在宽松模式下,那些积极阻止其他应用程序界面覆盖其上的浏览器可能会希望放宽此限制。

语法
void SecureBrowser.security.setPermissiveMode(Boolean enable, Function callback)

参数

  • enable - 指示预期宽松模式状态的布尔值。
  • callback - 此调用完成时要调用的函数。 它必须采用以下格式: Function(Boolean permissiveMode) 其中 permissiveMode 指示浏览器当前是否处于宽松模式。 如果未定义或为 null,则设置作中发生错误。

要求
Windows 10版本 1709 或更高版本


清空剪贴板

清除系统剪贴板。 测试应用程序应调用此项以强制清除可能存储在系统剪贴板中的任何数据。 lockDown 函数还会执行此操作。

语法
void SecureBrowser.security.emptyClipBoard();

要求
Windows 10版本 1709 或更高版本


getMACAddress

获取设备的 MAC 地址列表。 测试应用程序应调用此功能来帮助进行诊断。

语法
void SecureBrowser.security.getMACAddress(Function callback);

参数

  • callback - 此调用完成时要调用的函数。 它必须采取如下形式:Function(String addressArray) 其中 addressArray 应为形式:"['00:11:22:33:44:55','etc']"

备注
很难依赖源 IP 地址来区分测试服务器中的最终用户计算机,因为防火墙/NAT/代理通常用于学校。 MAC 地址允许应用区分常见防火墙后面的最终客户端计算机,以便进行诊断。

要求
Windows 10版本 1709 或更高版本


getStartTime

获取测试应用启动的时间。

语法
DateTime SecureBrowser.security.getStartTime();

返回
一个 DateTime 对象,指示测试应用启动的时间。

要求
Windows 10版本 1709 或更高版本


getCapability

查询某个功能是否已启用或禁用。

语法
Object SecureBrowser.security.getCapability(String feature)

参数

feature - 用于确定查询的功能的字符串。 有效的功能字符串为“screenMonitoring”、“printing”和“textSuggestions”(不区分大小写)。

返回值
此函数返回 JavaScript 对象或文本,格式为: {<feature>:true|false}。 如果已启用查询功能,则为 true;如果未启用该功能或功能字符串无效,则为 false

要求 Windows 10 版本 1703 或更高版本


setCapability

启用或禁用浏览器上的特定功能。

语法
void SecureBrowser.security.setCapability(String feature, String value, Function onSuccess, Function onError)

参数

  • feature - 用于确定要设置的功能的字符串。 有效的功能字符串是 "screenMonitoring""printing""textSuggestions"(不区分大小写)。
  • value - 该功能的预期设置。 它必须是 "true""false"
  • onSuccess - [可选] 成功完成设置作后要调用的函数。 它必须是Function(String jsonValue)格式,其中jsonValue采用以下格式:{<feature>:true|false|undefined}
  • onError - [可选] 设置操作失败时要调用的函数。 它的格式必须是Function(String jsonValue),其中jsonValue的格式为:{<feature>:true|false|undefined}

备注
如果目标功能对浏览器未知,此函数会将值 undefined 传递给回调函数。

要求 Windows 10 版本 1703 或更高版本


isRemoteSession

检查当前会话是否已远程登录。

语法
Boolean SecureBrowser.security.isRemoteSession();

返回值
如果当前会话为远程会话,则为 true,否则为 false

要求
Windows 10版本 1709 或更高版本


isVMSession

检查当前会话是否在虚拟机中运行。

语法
Boolean SecureBrowser.security.isVMSession();

返回值
如果当前会话在虚拟机中运行,则为 true,否则为 false

备注
此 API 检查只能检测在某些实现相应 API 的虚拟机监控程序中运行的 VM 会话

要求
Windows 10版本 1709 或更高版本