启动应用程序后,只执行脚本的第一行。在第一个语句之后,没有一个语句有效

问题描述 投票:0回答:3

我收到以下错误。

失败:超时等待异步Angular任务在100秒后完成。这可能是因为当前页面不是Angular应用程序。有关更多详细信息,请参阅常见问题解答:https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular在使用定位器等待元素时 - 定位器:By(css选择器,* [id =“password”])堆栈:ScriptTimeoutError:异步脚本超时:100秒内未收到结果

enter image description here enter image description here

我能够打开chrome浏览器并能够启动应用程序。启动应用程序后,只执行脚本的第一行。即。我可以将密钥发送到用户名文本框。在此之后我的脚本没有被执行。

注意:1。如果我包含元素(by.id('password'))。sendKeys('test');作为启动应用程序后的第一行,它将工作。 2.我也尝试了所有定位器,但我仍然遇到同样的错误。

我能够找到页面中的所有元素,这里的问题是在browser.get(“”)之后;声明,只有第一个声明有效。第一个语句可以是查找用户名或密码文本框。在第一个语句之后,没有一个语句有效。

Test.e2e.js如下所示

enter image description here

Protractor.config.js如下所示

enter image description here

我用于执行测试规范的命令。 我导航到我的脚本存储在本地计算机中的位置。 在上面的位置打开命令提示符。然后我从命令行运行以下命令:npm run protractor注意:我使用Visual Studio professional 2017(版本15.4.5)编写了我的脚本

angular protractor
3个回答
0
投票

您应该在protractor.conf.js块中添加onPrepare() {},禁用为Angular应用程序创建的特殊量角器等待参数。

// protractor.conf.js
...
onPreapare() {
  browser.waitForAngularEnabled(false)
}

您可以直接在Protractor API中查看该功能


0
投票

如果您正在测试非基于角色的网站,则必须在页面类中使用browser.ignoreSynchronization = true;


0
投票

如下所述,您应该使用waitForAngularEnabled:

onPrepare() {
  browser.waitForAngularEnabled(false)
}

但Oleksii的答案中有一个错字:onPreapare不是预备

请修理它,你会得到它。

© www.soinside.com 2019 - 2024. All rights reserved.