【发布时间】:2018-11-06 13:21:16
【问题描述】:
刚刚开始使用 Cypress,并在 Protractor/Jasmine 中获得乐趣。总体上运行良好,使用 Cypress UI(Chrome 和 Electron)进行测试运行良好。
但是,当我在 VS Code 或 VSTS 管道中运行 headless Electron 时,会出现未找到的元素错误。在浏览器中运行时,这些元素“在你面前”,所以我不确定问题是什么。
这是一个示例 - (之前的规范会加载 URL)
describe('OBM Smoketests', function() {
it('Select Hotel and Enter Search Dates', function() {
cy.get('.jss189 > div > .jss69 > .jss230 > .jss72').click({force: true});
cy.get('[value="OBMNG3"]').click();
cy.wait(1000);
});
});
我一直在使用 Selector Playground,可以看出,尝试了“强制”。这是错误:
1) OBM Smoketests Select Hotel and Enter Search Dates:
CypressError: Timed out retrying: Expected to find element: '.jss189 > div > .jss69 > .jss230 > .jss72', but never found it.
at Object.cypressErr (http://localhost:58691/__cypress/runner/cypress_runner.js:62993:11)
at Object.throwErr (http://localhost:58691/__cypress/runner/cypress_runner.js:62958:18)
at Object.throwErrByPath (http://localhost:58691/__cypress/runner/cypress_runner.js:62985:17)
at retry (http://localhost:58691/__cypress/runner/cypress_runner.js:56601:16)
at http://localhost:58691/__cypress/runner/cypress_runner.js:48711:18
at tryCatcher (http://localhost:58691/__cypress/runner/cypress_runner.js:124200:23)
at Promise._settlePromiseFromHandler (http://localhost:58691/__cypress/runner/cypress_runner.js:122218:31)
at Promise._settlePromise (http://localhost:58691/__cypress/runner/cypress_runner.js:122275:18)
at Promise._settlePromise0 (http://localhost:58691/__cypress/runner/cypress_runner.js:122320:10)
at Promise._settlePromises (http://localhost:58691/__cypress/runner/cypress_runner.js:122395:18)
at Async._drainQueue (http://localhost:58691/__cypress/runner/cypress_runner.js:119124:16)
at Async._drainQueues (http://localhost:58691/__cypress/runner/cypress_runner.js:119134:10)
at Async.drainQueues (http://localhost:58691/__cypress/runner/cypress_runner.js:119008:14)
at <anonymous>
有人给点建议吗? 谢谢
更多信息
虽然在 Electron 中无头运行时,控制台输出表明已找到三个规范,并且似乎一个接一个地运行它们,但我已经尝试过
cypress run --headed
...现在我看到在第一个规范运行后,浏览器关闭并重新启动下一个规范...假设浏览器保持打开状态...就好像您正在执行Selenium 中的相同内容!
必须有一种方法可以同时运行规范,而不必重新打开浏览器......或者它是长规范的情况?
【问题讨论】:
-
您是否尝试过在屏幕上找到更简单的元素?在dom层次结构中没有那么深的东西。如果你能做到这一点,那么我会尝试迭代你的选择器直到它中断。在我可以看到元素之前,我感到很奇怪,但是浏览器/柏树对应用到它的 css 不满意。当你无头运行时,你可能还想查看你运行的是什么版本的东西。 AFAIK 无头版和 UI 版使用两种不同的实现。
-
您的任何测试都有效吗?这里发生了一些奇怪的事情。你能看到带有测试等的页面标题吗?一些简单的事情。
-
@Maccurt - 嗨...是的,测试在 Chrome 和 Headed Electron 中运行良好。共有三种规格,这是中间的。
标签: javascript cypress