Selenium WebdriverIO-拍摄完整页面截图

Selenium WebdriverIO-拍摄完整页面截图,selenium,selenium-webdriver,automated-tests,webdriver-io,wdio-v4,Selenium,Selenium Webdriver,Automated Tests,Webdriver Io,Wdio V4,我正在尝试使用WebdriverIO截取整个页面的屏幕截图 我已经读到,最好的方法是使用增强我的WebdriverIO流。WebdriverCSS会自动截屏整个页面 问题是WebdriverCSS不适合我。我认为这是因为它与webdriverio@3.0.x 有什么方法可以让它工作,或者我可以使用其他解决方案吗 我的代码:(在回调中只生成未定义的值) !编辑: 这是铬的一个已知缺陷,很可能无法修复。有关更多详细信息,请参阅。您是否尝试过传递更高的div id并对其进行屏幕截图 browser

我正在尝试使用WebdriverIO截取整个页面的屏幕截图

我已经读到,最好的方法是使用增强我的WebdriverIO流。WebdriverCSS会自动截屏整个页面

问题是WebdriverCSS不适合我。我认为这是因为它与
webdriverio@3.0.x

有什么方法可以让它工作,或者我可以使用其他解决方案吗

我的代码:(在回调中只生成未定义的值)

!编辑:
这是铬的一个已知缺陷,很可能无法修复。有关更多详细信息,请参阅。

您是否尝试过传递更高的div id并对其进行屏幕截图

browser
    .init()
    .url("https://search.yahoo.com")
    .webdrivercss('startpage',[
            {
                name: 'fullpage',
                elem: '#purple-syc'
            }
编辑:我也可以看到完整的网页截图时,做

.saveScreenshot('./webdrivercss.png');


使用
.scroll(“#myElement”)
再次滚动并拍摄屏幕截图

这可能有很多方法,但最直接的方法是通过WebDrivero插件

  • 安装插件:
    npm安装--保存dev wdio屏幕截图
  • plugins
    对象中的
    wdio.conf.js
    文件中启用插件:
    plugins:{'wdio screenshot':{}
  • 在测试中,添加以下步骤(对于文档(整页屏幕截图):
    browser.saveDocumentScreenshot('/screenshotName.png');
  • 对于Instagram订阅源尝试,整个页面的屏幕截图看起来像。(出于明显的原因,将屏幕截图保留在线)

    • !Note-001:如果您不希望屏幕截图看起来像那样,那么我建议您使用一些来保证您的内容已成功加载和呈现

    • !Note-002:
      wdio屏幕截图
      支持3种类型的屏幕截图(视口(标准)、文档(整版)和元素(目标元素))


    @mags:我知道你需要截图来了解故障点。我想分享一下我使用的截图

  • 将诱惑报告集成到
    wdio.conf
    文件中,如下所示
    报告选项:{
    诱惑:{
    outputDir:“诱惑结果”
    },

  • 使用
    npm Install@wdio/allure reporter安装诱惑--保存开发人员

  • 执行测试套件后,运行此命令以生成诱惑结果
    allure-generate./allure-results-clean

  • 上述命令执行完成后,运行命令
    allure open

  • 现在,对于任何失败的测试,诱惑也会向您展示截图。 请参阅附带的示例屏幕截图


  • 在WebDrivero v6中,您可以使用Puppeter拍摄屏幕截图。 我已经回答了


    干杯!

    你在Chrome上有完整的屏幕截图吗?我在使用Chrome 50.0.2661.86(64位)。我听说有些浏览器有完整的屏幕截图,有些没有。@mags是的,我在Chrome上有完整的页面截图,如上所示。这是如何使用Chrome,以备不时之需。@mags我的Chrome版本-50.0.2661.86(64位)嗯。我不认为你得到了一张完整的屏幕截图。看起来你只是从你发布的图片中得到了视口。@mags增加
    视口
    向下滚动
    到特定位置。嘿@mags!这可能对你不再感兴趣了,但我发布了一个工作方法,可以让其他访问q的人轻松实现这一点还有一点需要澄清的是,blogpost和措辞可能会有点误导…Selenium或驱动程序团队(gheckodriver、chromedriver等)不应该实现这样的功能。除了仍然存在的明显的渲染问题之外…这应该只在高级框架级别上进行,这是合乎逻辑的(例如:WebDrivero,Puppeter)。Selenium(引用文档)是一个以用户为中心的web测试框架。添加一些用户不能做的事情,比如不滚动地查看整个页面(duh!),是团队永远不会做的事情。Selenium中的所有内容都是针对这一点实现的。(文本是一个字母一个字母地添加的,就像用户键入文本一样,第一个元素总是先单击,就像用户会单击一样,您不能像用户那样单击看不见的元素)。你明白了……诱惑生成了一个视图端口截图。OP正在寻找一种方法来捕获整个文档的截图。无论如何,OP似乎不再对这个问题的命运感兴趣了。@Seema Nair,不需要在钩子上写任何东西吗?我得到了以下错误类型错误:browser.saveDocumentScreenshot不是H的函数:\webdriver\webdriverio test\test.js:17:16在进程中。_tickCallback(internal/process/next_tick.js:68:7)如何检查插件是否加载?好的,看起来wdio屏幕截图不适用于webdriveriov5@SergeyL是的,这肯定是在一个
    webdriverio@4.x.x
    。在不久的将来,我将尝试用v5方式更新答案。谢谢你指出那个人!@SergeyL try browser.saveScreenshot用于跨浏览器和CROs设备谢谢,是的,我使用了比较服务。很难通过它进行设置。
    .saveScreenshot('./webdrivercss.png');