相关疑难解决方法(0)

如何等到元素存在?

我正在研究Chrome中的扩展程序,我想知道:什么是找出元素何时出现的最佳方法?使用普通的javascript,检查直到元素存在的间隔,或jQuery有一些简单的方法来做到这一点?

javascript jquery google-chrome google-chrome-extension

213
推荐指数
17
解决办法
22万
查看次数

如何使用 Cypress.io 检查元素是否存在

如何检查元素是否存在,以便在元素存在的情况下可以执行某些步骤。否则,如果元素不存在,则可以执行某些不同的步骤。

我尝试了类似下面的方法,但没有奏效:

Cypress.Commands.add('deleteSometheingFunction', () => {
  cy.get('body').then($body => {
    if ($body.find(selectors.ruleCard).length) {
      let count = 0;
      cy.get(selectors.ruleCard)
        .each(() => count++)
        .then(() => {
          while (count-- > 0) {
            cy.get('body')
            // ...
            // ...
          }
        });
    }
  });
  });
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个简单的解决方案,它可以与简单的 javascript if else block 或then()部分合并

类似于 Webdriver 协议的以下实现:

  1. driver.findElements(By.yourLocator).size() > 0
  2. 检查等待中元素的存在

好心提醒。谢谢

javascript selenium-webdriver cypress

39
推荐指数
4
解决办法
6万
查看次数

可能会也可能不会出现在页面开头的对话框

我需要处理我的页面可能在加载阶段显示弹出对话框或可能不出现的情况。单击任意位置都会将其删除,我对测试此对话框不感兴趣,但它阻止了我需要访问的页面,因此必须将其删除

这是在对话框出现时获取对话框的代码

cy.get('.wps_popup')
  .find('[data-wps-popup-close]')
  .click()
Run Code Online (Sandbox Code Playgroud)

但我不能把它放在测试的顶部,因为这个元素可能不会出现。

如何处理条件元素 - 我是否需要intercept更改 DOM 并将该代码放入事件侦听器中?

cypress cypress-conditional-testing

18
推荐指数
1
解决办法
457
查看次数

在 cypress.io 中,如果没有元素,如何计算元素数量而不导致测试失败?

使用cypress.io我可以获得与给定 CSS 选择器匹配的 HTML 元素列表,如下所示:

cypress.get(".some-class")

如果class 'some-class'页面上没有找到具有 的元素,则测试失败。这是设计使然。

我想尝试获取上面的 HTML 元素列表,但如果元素数量为 0,则不会导致测试失败。

如何使用 cypress.io 实现此目的?

javascript cypress

5
推荐指数
1
解决办法
1万
查看次数

无法找到元素来检查它是否存在于 cypress.io 的 before() 挂钩中

我的before()挂钩中有以下代码行。

before(() ==> {
cy.get(this.testPopup).then(($el) => {
   if ($el.length) {
      cy.get(this.testPopupCloseButton).click();
      cy.get(this.testPopup).should("not.exist");
    } 
  });
});
Run Code Online (Sandbox Code Playgroud)

会有一个弹出窗口,有时会显示,有时不会。我尝试编写一个逻辑来关闭该弹出窗口,并检查仅当弹出窗口存在时它是否在关闭时消失。

但我收到以下错误。

30000 毫秒后超时重试:期望找到元素:#test-popup-element,但从未找到。

由于此错误发生在 before all 挂钩期间,我们将跳过当前套件中的其余测试`

我基本上期望这里有一个软断言,即使该断言失败,它将继续运行其余的测试。

请指教。

assertion cypress cypress-conditional-testing

2
推荐指数
1
解决办法
90
查看次数

如何使用 cypress 在 if 条件下传递断言,而不在断言失败时停止执行

我试图将断言传递给 if 条件,并在满足条件时执行一个逻辑,在条件失败时执行另一个逻辑。

由于测试因断言失败而失败,我无法达到预期的结果。

我尝试了以下...

if(cy.get("div").length \> 0) {
  cy.log("print this")
} else {
  cy.log("print this")
}
Run Code Online (Sandbox Code Playgroud)

或者

if(cy.get("div").should('have.length.greaterThan', 0) {
  cy.log("print this")
} else {
  cy.log("print this")
}
Run Code Online (Sandbox Code Playgroud)

javascript automation cypress cypress-conditional-testing

0
推荐指数
2
解决办法
254
查看次数