javascript - browser.get() 不起作用

标签 javascript selenium-webdriver jasmine promise protractor

当我在控制台中打印出 url 时,我得到了适当的 url。但是,当我稍后尝试使用 browser.get() 获取该 url 时,出现以下错误:

Failed: Parameter 'url' must be a string, not objectFailed: Parameter 'url' must be a string, not object

我真的不明白为什么会发生这种情况。在我看来:
A)。这是一个字符串,因为我可以打印它。
b). ...我本来想说“ promise 已解决”...但我实际上不太确定。所有 beforeAll promise 在开始 it 语句之前都得到解决吗?我该如何解决?

beforeAll(function(){
    //some stuff 
    browser.waitForAngular();
    createdItemUrl = browser.getCurrentUrl().then(function(url){
        console.log('URL:' + url);
    });
});

it('Keeps failing lololol', function(){
    browser.get(createdItemUrl);
});

最佳答案

还有control flow在行动中。 getCurrentUrl() 是一个 promise ,如果您想重用实际的 URL 值,则必须解决该 promise :

var createdItemUrl;

beforeAll(function(){
    //some stuff 
    browser.waitForAngular();

    createdItemUrl = browser.getCurrentUrl();
});

it('Keeps failing lololol', function() {
    // createdItemUrl is a promise
    createdItemUrl.then(function (url) {
        browser.get(url);
    });
});

或者,您还可以添加阻塞 defer() -> fulfill() 机制,使其等待/阻塞,直到 promise 得到解决,请参阅:

关于javascript - browser.get() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163312/

相关文章:

java - 所有浏览器驱动程序和代码的 Selenium Java 基类是多余的

java - 如何比较表数据中的值并单击 Selenium

javascript - 了解在 Selenium 中执行异步脚本

selenium - Protractor 测试需要包含有两个或多个字符串

javascript - 如何在 Jasmine 测试中模拟特定日期

JavaScript/JQuery 数组/对象问题

javascript - 使用 Firefox 发送的 POST 请求中的字符编码问题

javascript - 如何使用 ng-model 绑定(bind)动态复选框值?

每次点击时Javascript其他功能

jasmine - 如何使用 Protractor 测试页面上不存在某个元素?