gpt4 book ai didi

javascript - EmbedScriptFromFile 和 RunScriptFromFile - QTP/UFT

转载 作者:行者123 更新时间:2023-11-29 10:13:45 25 4
gpt4 key购买 nike

请帮助我使用 EmbedScriptFromFileRunScriptFromFile 在 QTP/UFT 中执行 JS 文件。

我正在尝试使用 JS 文件获取 N 个值,并在数组中的 QTP/UFT 中接收相同的值。为此,我了解了 QTP/UFT 帮助部分中的 EmbedScriptFromFileRunScriptFromFile。但是当我尝试使用示例代码时,我无法按预期进行。请帮我解决这个问题

我正在使用的 Java 脚本代码:

function cloneArray(arr) {
var ret = [];
for (var i = 0; i < arr.length; ++i)
ret.push(arr[i]);
return ret;
}

VB 脚本,我正在使用:

Browser("Home").Page("Home").EmbedScriptFromFile "C:\Users\Gopi\Desktop\CloneArray.js" 'Call the function and run the script that returns the array'
Set cloned = Browser("Home").Page("Home").RunScriptFromFile("cloneArray(C:\Users\Gopi\Desktop)")

在执行这两行时出现一些错误 - 对于第一行,我收到错误,因为“对象不支持此属性或方法”。对于第二行,我收到错误消息“参数不正确”。请帮忙


2014 年 12 月 15 日: 我已经尝试了以下建议并且有效!但除此之外,我还尝试从 JavaScript 函数中获取数组值。

创建数组的代码:

function makeArray() {
var myArray = new Array(4);
for (var i = 0; i < myArray.length; i++){
myArray[i] = i+1;
}
return myArray;
}

所以我真正想要实现的是,执行 makeArray() 函数来创建一个数组,并使用 cloneArray 方法创建 QTP/UFT 支持数组,方法是传递makeArray() 将值/数组作为参数返回给 ConeArray(arr)。但是当我尝试使用以下代码实现此目的时,我无法做到。

Browser("Home").EmbedScriptFromFile "C:\Users\Gopi\Desktop\cloneArray.js"
'Set arr1 = Browser("Home").Page("Home").RunScriptFromFile "C:\Users\Gopi\Desktop\makeArray.js"
Set arr = Browser("Home").Page("Home").RunScript("cloneArray[C:\Users\Gopi\Desktop\makeArray.js]")
For i = 0 To arr.length - 1
msgbox i & ": " & arr.item(i)
Next

EmbedScript & RunScript 在我单独尝试时工作正常,但在尝试将另一个函数作为参数传递时无法使用。

我尝试在同一个 JS 文件中同时使用这两个函数并调用这些函数,并尝试了其他一些可能性。但没有任何帮助,所以请帮忙。

最佳答案

首先我们应该了解RunScriptEmbedScript函数(及其 FromFile 变体)。

  • RunScriptPage 的一种方法和 Frame它接受 JavaScript 并执行它,返回脚本的结果(通常是最后一次运行的表达式)。
  • EmbedScriptBrowser 的一种方法这意味着 “确保此脚本从现在开始在这个 Page 的所有 FrameBrowser 上运行”。此函数不返回任何值,因为它的主要目的是在将来运行(尽管它也会立即在 Page 和当前在 Frame 中的现有 Browser 上运行)。 EmbedScript可用于使 JavaScript 函数在未来可用 RunScript使用。

这些函数的普通版本接受一些 JavaScript 脚本,而 FromFile变体采用文件名(在文件系统或 ALM 中)并读取该文件。

关于您的问题 - 在您的第二行,您正在执行 RunScriptFromFile但没有传递文件名,你似乎传递了一个脚本(为此你应该使用 RunScript )。另外,您传递给 cloneArray 的参数不是有效的 JavaScript 值。

如果你希望它是一个字符串,你应该把它放在引号中,无论如何它看起来像你期待一个数组所以也许你打算这样做:

Set cloned = Browser("Home").Page("Home").RunScript("cloneArray(['Users', 'Gopi'])")

在任何情况下,将 JavaScript 数组传递到 VBScript 都是有问题的,.length属性工作正常,但索引到数组是一个问题(可能是因为 JavaScript 使用方括号而 VBScript 使用圆括号)。

数组问题的解决方法可能是这样的

// wrapArray.js
function wrapArray(array) {
return {
length: array.length,
item: function(index) {
return array[index];
}
};
}

然后就可以在UFT/QTP中使用下面的了。

Browser("B").EmbedScriptFromFile "C:\wrapArray.js"
Set arr = Browser("B").Page("P").RunScript("wrapArray(['answer', 42])")
For i = 0 To arr.length - 1
Print i & ": " & arr.item(i)
Next

输出:

0: answer
1: 42

关于javascript - EmbedScriptFromFile 和 RunScriptFromFile - QTP/UFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27438173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com