我最近偶然发现了e2e工具-Cypress.io.我目前正在为与我合作的公司做POC,以对React应用程序进行端到端测试。它有一个悬停在菜单上的菜单,就像现在大多数网络应用程序一样。一个例子:网址:Fmovies我试图通过悬停单击菜单项,但测试失败,显示display设置为none。在Selenium中,我们使用moveElement方法转到该元素,然后执行我们需要执行的任何操作。但是,我没有使用Cypress这样做。考虑到现在的菜单,我这样写it('goestospecificelementinGenre',()=>{cy.get('#menu').within(()=>{cy.g
我正在尝试找出我是否能够有条件地跳过我的测试套件中的测试it()并处理它的异步性质。我在Cypress文档中读到了条件测试https://docs.cypress.io/guides/core-concepts/conditional-testing.html还有关于它的mochajs文档https://mochajs.org/.我的目的是检查网站上是否显示错误,如果显示错误则跳过测试。否则继续断言。我试图在Cypress中测试的来自mochajs的代码片段是:it('shouldonlytestinthecorrectenvironment',function(){if(/*chec
等待“请稍候”模式关闭的标准Cypress方式是什么?很容易检查它在那里,但不使用cy.wait(ms),我怎样才能使Cypress持续检查一段时间,以查看该元素是否已从中删除DOM,还是不可见? 最佳答案 您可以简单地使用should断言它不存在,Cypress将等待该元素,直到它从DOM中删除。如果需要覆盖默认的4s超时,可以将其传递给上一个命令:cy.get(selector,{timeout:10000}).should("not.exist"); 关于javascript-等待
我在一个页面上有15个按钮。我需要测试每个按钮。我尝试了一个简单的for循环,比如for(vari=1;i但是Cypress不喜欢这样。我将如何在Cypress中编写for循环? 最佳答案 为了强制执行任意循环,我创建了一个包含所需索引的数组,然后调用cy.wrapvargenArr=Array.from({length:15},(v,k)=>k+1)cy.wrap(genArr).each((index)=>{cy.get("#button-"+index).click()}) 关于j
我遇到了令人困惑的错误,实际上我不知道如何解决这样的库问题,我尝试生成我的cypress测试用例以向mochawesome报告,下面是我的package.json安装文件{"devDependencies":{"cypress":"^3.1.5","mocha":"^6.0.2","mocha-junit-reporter":"^1.18.0","mocha-multi-reporters":"^1.1.7","mochawesome":"^3.1.1","mochawesome-merge":"^1.0.7","mochawesome-report-generator":"^3.1.
我遇到了一个很奇怪的问题。我创建了一个非常基本和简单的cypress项目,只有示例测试用例,没有任何其他devDependencies只有cypress。当我第一次在visualstudiocode中打开这个项目时,当鼠标悬停在一个方法上时,我可以看到一个带有一些签名帮助的弹出窗口,然后右键单击该方法选择“转到定义”,我可以打开该文件。在我写了一个代码“cy.”之后发生了奇怪的事情,它应该给我智能代码建议,但是没有任何建议,鼠标悬停在任何方法上,签名帮助消失了,右键单击该方法选择“转到”定义”我得到“找不到'XXX'的定义”问过很多开发者,没有人能回答,请大家帮忙,谢谢!
我有一个加载指示器,我需要等待它消失才能执行我的断言。我见过一些人使用以下内容,但它似乎对我不起作用,而且我也不希望它成为断言。cy.get('element',{timeout:10_000}).should('not.exist');有人有什么建议吗? 最佳答案 恕我直言,最干净的方法是不要对get使用等待或超时,这有点反模式。我建议使用CypresswaitUntil命令并使用类似的东西:cy.waitUntil(function(){returncy.get('element').should('not.exist');})
我有一个使用d3-zoom的SVG对象用于缩放和平移功能。它工作完美,但当我开始使用Cypress.js进行集成测试时,问题就出现了。.我尝试在svg元素上使用标准鼠标事件来模拟拖动行为:cy.get('svg').trigger('mousedown',{which:1,force:true}).trigger('mousemove',{position:'left'}).trigger('mouseup',{position:'left',force:true});上面的例子取自Cypressdraganddroprecipe,它会在nodrag.js文件中产生以下错误:canno
我刚刚开始探索Cypress并遇到了这样一个问题:是否可以在JavascriptExecutor的帮助下选择一个具体的属性并像在Selenium中那样更改它的值?例如让我们以这段简单的代码为例inputid="mapsearch"type="textbox"class="form-control"name="address"test=""是否可以获取测试属性并分配我自己的值? 最佳答案 是的。您可以在JavaScript中做的任何事情都可以在Cypress测试中实现。对于上面的html,您可以在Cypress中使用.invoke()
如何将文本输入字段值获取到Cypress中的“const”变量,以便我可以使用cy.log()记录该变量。以下代码没有记录任何内容,熟悉Cypress.io的人可以指教cy.get('input[name="email"]').then(($text)=>{consttxt=$text.text()cy.log(txt)}) 最佳答案 使用invoke('val')而不是invoke('text')对我的情况有效。html标签的提示Cypress代码cy.get('input[name="email"]').invoke('val'