当前位置: 首页 > 知识库问答 >
问题:

是否可以在“执行脚本”中解析promise?

严昀
2023-03-14
describe('Text', function() {
    it('should be displayed on stage with set value', function() {
        var deferred = protractor.promise.defer();
        var promise = deferred.promise;

        promise.then(function (data) {
            console.log(data);
        });

        browser.driver.executeScript('arguments[0].fulfill("Some data");', deferred);
    });
});

是否有可能在函数executescript()的上下文中解析(实现)一个promise对象?是否有其他方法处理这个问题?

UPD:这个代码对我有效。谢了!

describe('Text', function() {
    it('should be displayed on stage with set value', function() {
        var deferred = protractor.promise.defer();

        browser.driver.executeAsyncScript(function () {
            var callback = arguments[arguments.length - 1];

            MyApp.apiFunction({
                callback: function (callbackParams) {
                    callback(callbackParams);
                }
            });
        }, function (data) { // Callback
            deferred.fulfill(data);
        }).then(function (result) {
            // Do what you need with data...
            console.log('Result: ', result);
        });
    });
});

共有1个答案

胡承载
2023-03-14

executeAsyncScript()正是您所需要的。

引用理解Selenium中执行异步脚本主题中的@hankduan:

当您关心调用脚本中的返回值时,请使用executeAsyncScript,但该返回值不会立即可用。如果您不能轮询结果,但必须使用回调或promise(您必须将其转换为自己的回调)来获得结果,这就特别必要。

 类似资料:
  • 问题内容: pm2是否可以运行npm start脚本,还是只需要运行 所以在发展中 然后在pm2的生产环境中运行类似 有一个等效的方法可以做到这一点: 问题答案: PM2现在支持npm start: 要将名称分配给PM2进程,请使用以下选项:

  • 问题内容: 我必须转换一个传递查询的MSSQL存储过程: 这不起作用。我敢肯定,而不是MySQL的命令,但也不管用。 有谁知道是否有可能为MySQL提供类似JavaScript的功能? 问题答案: EXECUTE是MySQL中的有效命令。MySQL参考手册

  • 问题内容: 我正在寻找一种在客户端(即在浏览器中)进行traceroute的方法。 据我所知,不可能通过Javascript或Flash发送具有任意TTL值的ICMP,UDP或TCP数据包。我知道Flash允许通过Actionscript中的Socket类进行TCP连接,但是它对于traceroute实现似乎没有用。 是开发浏览器插件的唯一解决方案吗? 编辑 :我刚刚发现它已经用Java小程序完成

  • 通过on_delete选项,Django提供了各种方法来处理具有被删除对象外键的对象。 我想知道是否有一种方法,我可以做类似的事情,但有条件的。下面是一个场景。我正在使用Django1.5新的自定义用户模型,我的所有用户都有一个网站的外键。像这样: 如果一个站点被删除了,那么我更愿意删除所有链接到该站点的非超级用户(即类似KASKADE的behavoir),因为它们的存在现在已经没有意义了。但如果

  • 问题内容: 通常,您可以执行Python脚本,例如:,但是如果您处于交互模式,那么如何在文件系统上执行Python脚本呢? 应该可以多次执行该脚本。 问题答案: 使用的execfile(“script.py”),但只对蟒蛇2.x的工作,如果你使用的是3.0试试这个

  • 今天我一直在玩谷歌应用程序脚本,我正在尝试编写一些自定义电子表格函数。我做了一些搜索,但找不到我的问题的答案。 我知道,在谷歌电子表格中,您可以在电子表格的单元格中使用ImportRange,如下所示: 我的问题是,有没有可能在谷歌应用程序脚本中做类似的事情?如果有,怎么做? 我想从另一个电子表格上的工作表(而不是脚本将驻留的电子表格上的工作表)导入一系列单元格。