我想登录并localStorage在客户端设置令牌(具体jwt)
cy.request如赛普拉斯文档中所建议的,如何使用它来实现此目的?
我想测试我的表单是否可访问,并且我可以在输入元素之间进行切换。我发现这个 github 问题在这里请求该功能: https: //github.com/cypress-io/cypress/issues/299
目前我尝试这样做.type('{tab}'),但收到以下错误:
CypressError:{tab} 不是受支持的字符序列。您将需要使用命令 cy.tab(),该命令尚未准备就绪,但完成后您将使用该命令。
目前是否有针对缺乏选项卡支持的解决方法?
我只想切换运行一个测试,所以不必等待其他测试来查看一个测试的结果。
目前,我注释掉了其他测试,但这确实很烦人。
有没有一种方法可以切换仅运行一个测试Cypress?
我刚刚使用“npm install cypress --save-dev”安装了赛普拉斯,并确认安装成功,详情如下
尝试使用提示打开赛普拉斯: node_modules.bin\cypress open 但得到以下消息但没有列出错误。有没有人遇到过这个?
“看起来这是您第一次使用 Cypress:1.4.1
? 赛普拉斯版本:1.4.1 赛普拉斯无法启动。
这通常是由缺少库或依赖项引起的。
下面的错误应该表明缺少哪个依赖项。
https://on.cypress.io/required-dependencies
平台:win32 (10.0.14393) Cypress 版本:1.4.1"
我有时会有 1 或 2 个在 CI 中失败的测试,并且重新运行构建会导致它们通过。
如何自动重新运行这些不稳定的测试,以便我的构建第一次通过?有什么类似mocha的this.retries?
例如,我有一个测试失败,“元素的有效高度为 0x0”大约有 10% 的时间:
cy.visit('/')
cy.get('.my-element').click() // sometimes fails with not visible error
Run Code Online (Sandbox Code Playgroud) 我在commands.js 文件中编写了一些函数用于cypress 自动化测试,其中我只能调用一个(即“登录”),但无法调用另一个.js 文件中的其他函数。赛普拉斯测试运行程序显示
“类型错误:
cy.FillAddCaseDetails不是一个函数”
describe('Adding a Case on CSS Poratal ', function() {
before(function () {
cy.login() // calling login function successfully
})
it('open add case',function(){
cy.wait(9000)
cy.hash().should('contains','#/home')
cy.wait(['@GETcontentLoad']);
cy.wait(['@POSTcontentLoad']);
cy.get('[uib-tooltip="Add Case"]').click({force:true})
cy.log('clicked on Add case')
cy.wait(3000)
cy.get('[ng-click="lookup.cancel()"]').click({force: true})
cy.get('[ng-click="lookup.closeAddCase()"]').click({force: true})
cy.get('[uib-tooltip="Add Case"]').click({force:true})
cy.wait(3000)
cy.get('[ng-model="lookup.selectedPartner"]',{force:true})
.type(AddJob.JobData.Partner,{force: true})
cy.xpath('//input[@ng-model="lookup.selectedPartner"]')
.should('be.visible').then(() => {
cy.FillAddCaseDetails() // unable to call
cy.FillCustomerDetails() // unable to call
})
Run Code Online (Sandbox Code Playgroud)
功能:
Cypress.Commands.add("FillCustomerDetails", () => {
cy.get('[ng-model="lookup.firstName"]')
.type(AddJob.JobData.FirstName, { force: true})
cy.get('[ng-model="lookup.lastName"]')
.type(AddJob.JobData.LastName, { force: true …Run Code Online (Sandbox Code Playgroud) 上面是 Monaco Editor 渲染的 dom 节点的层次结构。有一个textarea节点呈现,但不允许修改现有内容。
例子:
如果编辑器中的内容是“Foo”,那么这段代码...
cy.get('.react-monaco-editor-container textarea')
.type('{selectall}')
.type('blah');
Run Code Online (Sandbox Code Playgroud)
...只会在编辑器中添加 blah,导致“blahFoo”
您如何使用赛普拉斯在摩纳哥编辑器中选择所有内容并更新内容?
编辑:
我已经尝试了到目前为止给出的所有建议:.click()、.clear() 等。它不起作用。请仅在您尝试过并有效时提供建议。
我想将数组中存在的数据与在 cypress 中使用 .each 从类中检索到的数据进行比较?
使用下面的代码,我尝试使用下面的代码迭代 FileType 数组。
const Filetype = ['Access', 'Excel', 'Text/CSV','PDF','JSON','dsdsd'];
const te = cy.wrap($bodyFind).find('.data-sourcename').should('have.length',6).each(($li) => { cy.log($li.text()); });
te.each(($text)=> {
cy.log("Te" + $text);
//prints ['Access','Excel','Text/CSV','PDF','JSON','XML'];
});
// Converted FileType Array to Cypress object using cy.wrap command.
const cywrap = cy.wrap(Filetype);
te.each((e1)=>cywrap.each((e2)=> {
if(e1 == e2) {
expect(e1).equals(e2);
}
}));
Run Code Online (Sandbox Code Playgroud)
但是e1和e2的值是一样的。期望应该失败,“dsdsd”等于“XML”,而它通过“dsdsd”等于“dsdsd”
我想保存/持久化/保存由cy.request()设置的cookie或localStorage令牌,这样我就不必使用自定义命令登录每个测试.这应该适用于存储在客户端localStorage中的jwt(json web tokens)之类的令牌.
我正在使用 webpack-dev-server 和 Cypress GUI 进行开发工作流,我希望 Cypress 在 WDS 自动重新加载触发的页面重新加载时自动重新运行/重新启动测试。
现在发生的是我看到 WDS 导致页面重新加载,但 Cypress 会话只是停留在它停止的地方。
我似乎无法找到一种方法来实现这一点。我没有看到任何公共(或私人)方式来触发赛普拉斯重新运行当前选定的测试。
cypress ×10
e2e-testing ×3
javascript ×2
browser ×1
node.js ×1
testing ×1
typescript ×1
webpack ×1
windows ×1