javascript - 订单 Protractor/webdriver 执行 promise

标签 javascript selenium-webdriver webdriver protractor

以下代码从网页中获取一些文本,获取一个输入框,清除它并将之前的文本发送到该输入框:

var pText = browser.element(by.css('some_tag')).getText();
var inputbox = browser.element(by.css('[data-aid="login-app-input-username"]'));
inputbox.clear();
// if pText is defined here, everything is ok.
inputbox.then(
    function(e){
        pText.then(
            function(text) {
                e.sendKeys(text);
            });
    });

结果是 sendKeys()clear() 之前完成,尽管代码的顺序。
如果我们将 pText 的声明向下放置 3 行(在 clear() 之后)一切正常。

我的问题是如何在不依赖于 pText 声明的情况下以正确的顺序执行上述代码。 顺便说一句,我知道 sendKeys() 可以收到 promise ,这不是我正在寻找的解决方案。

最佳答案

最简单的方法是:

var pText = browser.element(by.css('some_tag')).getText();
var inputbox = browser.element(by.css('[data-aid="login-app-input-username"]'));

pText.then(function(text) {
  inputbox.clear().sendKeys(text);
}

关于javascript - 订单 Protractor/webdriver 执行 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24998230/

相关文章:

javascript - JSLint : Expected '!!' and instead saw '?'

java - 单击与其他元素具有相同类名的元素

java - 何时停止在对象中定义 FindBy 并将其移至测试

javascript - Safari13 webdriverio点击问题

javascript - 深度嵌套的 JS 闭包

python - Selenium、动态内容、chrome webdriver

java - 如何使用 java 在 selenium webdriver 中提示输入并使用结果?

javascript - 提升与范围链

javascript - JS 防止焦点上闪烁的输入边框

javascript - 如何在 map 函数中为每个 ID 获取项目