在木偶操作员中检查特定属性/检查元素的陈旧性?

时间:2018-05-24 18:12:43

标签: javascript node.js selenium ui-testing puppeteer

嗨我对此有点新意,但是我正在从使用Node.js的Selenium转移到Puppeteer进行UI测试,我想知道在Puppeteer中检查的最佳方法是什么元素已经过时(从DOM中删除),也是检查元素特定属性更改的最佳方法(例如,如果元素的不透明度从0更改为1或元素已被禁用)

以下是我在Selenium中实现两者的一些例子:

检查属性更改 -

function waitForOpacity(driver, obj, time) {
  driver.wait(() => {
    return obj.getCssValue('opacity').then(opacity => opacity === '1')
  }, time)
} 

waitForOpacity(driver, submitButton, 30000)
submitButton.click()

检查元素的陈旧性 -

function stalenessOf(driver, until, obj, time) {
 return driver.wait(until.stalenessOf(obj), time)
}

stalenessOf(driver, until, someModalElement, 60000)

我在Puppeteer中尝试过类似的东西 -

await page.waitForSelector('.myButton');
  await page.evaluate(() => {
    document.querySelector('.myButton').style.opacity === '1';
  }); 
  await page.click('.myButton');

但是我不认为这是正确的语法...非常感谢任何帮助,非常感谢!

1 个答案:

答案 0 :(得分:1)

我想我经过一些研究后想出来了,但不确定它是否是最干净的解决方案 -

检查不透明度变化 -

await page.waitForSelector('.myBtn');
  await page.waitFor(
    () => document.querySelector('.myBtn').style.opacity === '1'
  );
  await page.click('.myBtn');

检查元素的陈旧性 -

await page.waitFor(
    () => !document.querySelector('.someModalElement')
  );