gpt4 book ai didi

ios-ui-automation - 在 UIAutomation javascript 中链接 #imports

转载 作者:行者123 更新时间:2023-12-04 09:00:50 25 4
gpt4 key购买 nike

我正在尝试将我的 UIAutomation 测试脚本分解成多个 block ,以便一次运行一个或一起运行它们。所以我有一个结构:

all-tests.js:

#import "tab-dates.js"
#import "tab-temperatures.js"

tab-dates.js:

#import "../../../Libraries/tuneup_js/tuneup.js"
#import "dpl_assertions.js"

var target = UIATarget.localTarget();
var app = target.frontMostApp();

test("Verify date view is shown", function() {
assertEquals(tabBar.selectedButton().name(), "Date");
});

这两者都位于同一目录中,并被导入到也位于同一目录中的自动化跟踪文件中。

当我直接运行 tab-dates.js 时,一切正常。找到 tuneup.js,路径正确,测试通过。但是当我尝试运行 all-tests.js 时,我得到:

Script threw an uncaught JavaScript error: Can't find variable: test on line 8 of tab-dates.js

这不是直接路径问题,因为如果我编辑脚本以中断路径,我会得到一个不同的错误,明确指出“找不到文件”。

据我所知,链接导入应该有效——我的意思是,这就是 tuneup.js (https://github.com/alexvollmer/tuneup_js) 的全部:

#import "assertions.js"
#import "lang-ext.js"
#import "uiautomation-ext.js"
#import "screen.js"
#import "test.js"
#import "image_assertion.js"

所以我遇到了奇怪的情况

  • tab-dates.js 导入 tuneup.js 导入 test.js => 确定
  • all-tests.js 导入 tab-dates.js 导入 tuneup.js 导入 test.js => 不行

这是怎么回事?

最佳答案

TL;DR 您运行的初始脚本很特别。要解决此问题,请创建一个仅包含另一个脚本的初始脚本,然后应用这些通用规则:

  • 导入按照它们在文件中出现的顺序完成
  • 脚本将首先执行,然后进行导入
  • 导入是深度优先
  • 导入一次的脚本不会再次导入

但是,初始脚本不遵守这些规则。

我花了一些时间通过创建四个脚本来解决这个问题:one.js;二.js; three.js 和 other.js,其中 one.js 导入 two.js;导入 three.js;它导入 one.js,它们都导入 other.js。除了导入之外,脚本还会记录它们的名称,如下所示:

#import "two.js";
#import "other.js";
UIALogger.logMessage("one.js");

如果我然后运行 ​​one.js,我得到的输出是

2015-03-04 21:21:20 +0000 Default: two.js
2015-03-04 21:21:20 +0000 Default: three.js
2015-03-04 21:21:20 +0000 Default: one.js
2015-03-04 21:21:20 +0000 Default: other.js
2015-03-04 21:21:21 +0000 Default: one.js

然后我创建了一个名为 launch.js 的脚本,它仅导入 one.js 而不导入其他任何内容。当我运行这个脚本时,我得到的输出是:

2015-03-04 21:27:59 +0000 Default: one.js
2015-03-04 21:27:59 +0000 Default: two.js
2015-03-04 21:27:59 +0000 Default: three.js
2015-03-04 21:28:00 +0000 Default: other.js
2015-03-04 21:28:00 +0000 Default: launch.js

由此我们可以推断出:

  • 调用的初始脚本将首先进行导入,然后执行
  • 初始脚本将被重新导入并运行,如果被其他脚本导入,恰好一次
  • 导入是深度优先

所以使用 launch.js 策略来减少你生活中的痛苦。

关于ios-ui-automation - 在 UIAutomation javascript 中链接 #imports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17868712/

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