当前位置 : 首页 » 互动问答 » 正文

如何在独立模式下同步运行webdriverio?

分类 : 互动问答 | 发布时间 : 2018-04-27 16:51:44 | 评论 : 1 | 浏览 : 57 | 喜欢 : 0

http://webdriver.io/guide/getstarted/modes.html

我绝对会尝试使用Chromedriver来调试webdriverio测试。因为webdriverio命令是异步的,并且浏览器会话与测试不同步,所以您无法逐句通过代码,因为阅读文档似乎需要像Chai或wdio这样的测试框架来生成测试,但这似乎有很多工作只是为了使用程序化的同步命令

我只需要使用webdriverio抓取一些网站,但这种异步命令太难以使用Chrome开发工具进行调试了

有没有办法强制?webdriverio表现同步

变种loadedPage = webdriverio.remote(选项)的.init().URL( 'https://google.com');

ex)

还没有准备好,并且由时间调试移动到未定义下一行。

except loadedPage is not ready and is undefined by the time debug moves to next line.

回答(1)

  • 1楼
  • Well, WebdriverIO 只是一个自动化框架的宝石,综合文档是其强大的功能之一。正如您正确指出的那样,一切都是异步,但使用WDIO,如果您来自传统的顺序编程背景,则还可以选择完全同步。

    首先,您必须先阅读一下< notranslate>,特别是 var webdriverio = require('webdriverio'); var options = {desiredCapabilities:{browserName:'chrome'}}; var client = webdriverio.remote(options); 客户     。在里面()     .URL( 'https://duckduckgo.com/')     .setValue('#search_form_input_homepage','WebdriverIO')     。点击( '#search_button_homepage')     .getTitle()     。然后(函数(标题){         console.log('Title is:'+ title);         //输出:“标题是:DuckDuckGo上的WebdriverIO(Software)     })     。结束(); JavaScript Promises .then() function.

    使用上述方法,您将

    ,但您也可以在出于调试目的,WebdriverIO带有一个开箱即用的设计精美的Read-Eval-Print-Loop(内部使用同步命令,始终必须链接您的命令.then() statement.

    )形式为 。只需将它添加到您的测试用例中,然后在希望执行停止的位置,以便您可以在您选择的终端内进行调试。.debug() command REPL inferface

    !!! Note:命令的默认超时时间很短。确保你增加了它<使用.debug() Synchronous


    pain-in-the-ass 上面将生成项目根目录下的 //如果你在全局安装了软件包,或者你有wdio // PATH中的二进制 wdio配置 // 要么。从你的项目的根源 ./node_nodules/.bin/wdio配置

    文件。它将被测试运行者用来运行你的测试用例。测试运行者还抽象了

    的初始化,你将不会再处​​理它。只需选择一个框架来运行测试用例(摩卡,黄瓜或茉莉花)并开始编写测试。 将成为您的驱动程序对象。 另外,请确保已配置 wdio.conf.js .client()从现在起,

    !!! Note:文件以支持运行测试用例的这种方式:设置sync-flag以支持此方法:browser。您可以通过您的测试应该如下所示(使用Mocha):运行测试wdio.conf.js sync: true wdio wdio.conf.js var expect = require('chai') 。期望; 描述(“Testing Robots Emporium Test Suite”,function(){     beforeEach(function(){         // ==>你的设置在这里<==         browser.url( 'http://www.kevinlamping.com/webdriverio-course-content/index.html')         var currentUrl = browser.getUrl();         期望(CURRENTURL).INCLUDE( “/ index.html中”);     })     它(“常见问题已正确呈现”,function(){         var height = browser.getCssProperty(“ul.accordion”,'height');         //添加了一个调试步骤,只是为了向您展示调试的容易程度         browser.debug();         期望(height.parsed.value).to.be.above(300);         //第一个元素被展开         var firstItemText = browser.getText('ul.accordion li:nth-​​of-type(1)div');         expect(firstItemText).to.contain('是金属类型');     });     afterEach(function(){        // ==>您在这里清理<==     }); }); command.

    方法(使用

    异步
    • 这是我的转向方法。它为您提供了对测试用例执行的最佳控制,但我不推荐它如果你刚开始,基本上就是上面的例子,但是所有的命令都是链接的 WDIO测试运行器确保你为此设置了):

    标志。

    !!! Note: sync:false sync: false让我知道这是否有帮助干杯!

    Let me know if this helps. Cheers!

相关阅读: