【发布时间】:2022-01-18 02:24:39
【问题描述】:
这让我抓狂:)
我正在使用
"@angular/core": "~11.2.9",
"protractor": "~7.0.0",
我尝试验证非常简单的事情
- 我使用 browser.get(url) 导航到 URL
- 我找到并选择第一个链接并单击它 - 链接定义为
<a class="article-list-item" *ngFor="let item of items" routerLink="/items/{{item.id}}/{{item.version}}"> - 点击更改页面的路由和角度加载我可以在浏览器中看到的新内容
- 量角器超时,因为它无法在新视图中选择子元素
实际上它会打印类似的东西
Failed: script timeout
(Session info: chrome=96.0.4664.93)
(Driver info: chromedriver=96.0.4664.45 (76e4c1bb2ab4671b8beba3444e61c0f17584b2fc-refs/branch-heads/4664@{#947}),platform=Mac OS X 11.6.0 arm64)
ScriptTimeoutError: script timeout
(Session info: chrome=96.0.4664.93)
(Driver info: chromedriver=96.0.4664.45 (76e4c1bb2ab4671b8beba3444e61c0f17584b2fc-refs/branch-heads/4664@{#947}),platform=Mac OS X 11.6.0 arm64)
这没什么用!
我找到了这个页面https://www.protractortest.org/#/timeouts - 但实际上没有任何帮助,所以问题是为什么量角器不能与角度路由器一起玩?以及我做错了什么。
点击后我执行这段代码
let until = protractor.ExpectedConditions;
return browser.wait(until.visibilityOf(element(by.css(path))), 5000, 'cannot find by ' + path);
整个页面已正确呈现,所以我猜是量角器无法检测到更改。
我还在某处发现,对于这样的动态元素,我应该使用 browser.driver api 而不是浏览器 - 这有点不同,无论如何这也无法检测到动态元素。
我猜问题是它不会轮询和重新创建元素承诺,它只是等到初始承诺被履行,而且永远不会。所以我尝试了类似
return browser.driver.wait(driver => driver.findElement(by.css(path)), timout, "cannot find element by " + path);
如果我在等待之前命中断点,它有时会起作用。
感谢您的帮助 - 这应该会容易得多:D
【问题讨论】:
标签: angular typescript dynamic protractor