如何用browser.wait替换browser.sleep?

时间:2018-02-18 23:19:12

标签: javascript node.js selenium protractor

我在json文件中有我的测试数据(元素查找器和元素id),并在我的测试脚本中进行解析以执行测试。我在这里遇到的问题是,我在每个元素之后放置了browser.sleep,以便在DOM上发生相应的元素。但我想用browser.wait替换browser.sleep,因为browser.sleep不是最好的做法。下面是我的代码。请提出如何用wait命令替换browser.sleep的建议。

var controlData = require("../../TestData/EmailForm/e2e_Test.json");
        var controlKeys;
        var respose;
        var testData;

        function(callback){
            controlKeys=["BtnEmailChkBox","BtnUpdate","TrueEmailGetAttribute"];
            async.eachSeries(controlKeys,function(key,next){
                commands.execute(testConfig,controlData[key],function(err,res){
                    respose = res[0].data;
                    testData = controlData[key].actions[0].data;
                    expect(respose).toEqual(testData);
                    browser.sleep(5000);
                    next();
                });
            },function(err){
                callback();
            })
        },

1 个答案:

答案 0 :(得分:0)

你可以编写自定义等待函数作为测试的utils,或者你可以直接编写它。为此,Protractor提供browser.wait()功能。

第一个参数是函数谓词,您可以查看ExpectedConditions命名空间中的预定义函数。

第二个是可选的,定义等待条件为真的时间。

第三个也是可选的,如果等待超时,则定义要使用的消息。

browser.wait(
  ExpectedConditions.presenceOf(your_element),
  how_long_you_want_to_wait_in_ms
  optional_third_parameter_could_be_error_message
)