javascript 如何从webdriver浏览器隐藏网页元素,url调用

sg3maiej  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(168)

bounty将在5天后过期。回答此问题可获得+150声望奖励。Steve希望引起更多人关注此问题。

我们的webdriver测试需要隐藏一个在浏览器向下滚动页面时在屏幕截图中被多次记录的元素。它是一个浮动元素。
我有:

it('should save Food blog page screenshotsscreenshots', async () => {
    const adjustedURL = new browser();
    await adjustedURL
      .url('en-au/blog/elements-and-templates-food-sustainability/')
      .execute(() => {document.getElementByID("_hjSafeContext_7335155").style["opacity"] = "0";})
      .pause(4000)
      .saveFullPageScreen('AU-Food-blog', {});
  });

但是接收到错误TypeError: browser is not a constructor
如果我用途:

it('should save Food blog page screenshotsscreenshots', async () => {
    await browser
      .url('en-au/blog/elements-and-templates-food-sustainability/')
      .execute(() => {document.getElementByID("_hjSafeContext_7335155").style["opacity"] = "0";})
      .pause(4000)
      .saveFullPageScreen('AU-Food-blog', {});
  });

我得到browser.url(...).execute is not a function

编辑,可能内部通信HTML发生了变化,我现在需要将.intercom-lightweight-app-launcher作为目标:

it('should save Food blog page screenshotsscreenshots', async () => {
    await browser.url('en-au/blog/elements-and-templates-food-sustainability/');
    await browser.execute(() => {document.getElementByClass("intercom-lightweight-app-launcher").style.opacity = "0";});
    await browser.pause(4000)
    await browser.saveFullPageScreen('AU-Food-blog', {});
  });

如果我手动将.intercom-lightweight-app-launcher的不透明度设置为0,Intercom小部件将变为不可见,但是对webdriver代码的上述更改意味着Intercom小部件仍然会被烘焙到屏幕截图中。

wfveoks0

wfveoks01#

看起来你不能用WebdriverIO链接浏览器方法,相反,你可以重用browser对象,以及await每个方法,如下所示:

it('should save Food blog page screenshots', async () => {
    await browser.url('en-au/blog/elements-and-templates-food-sustainability/');
    await browser.execute(() => {document.querySelector(".intercom-lightweight-app-launcher").style.opacity = "0";});
    await browser.pause(4000);
    await browser.saveFullPageScreen('AU-Food-blog', {});
    // some test here
  });

相关问题