量角器测试:URL哈希更改时强制刷新的选项

时间:2018-03-19 21:56:04

标签: javascript protractor e2e-testing

在运行一些量角器测试时,我需要在测试之间刷新浏览器。我注意到只有URL哈希值发生变化时才会起作用(see here)。

我尝试拨打.refresh().navigate.refresh()来强制浏览器刷新。这似乎没有做任何事情。可能是因为上面引用的问题,因为只有散列改变了?

我尝试了.restart(),确实打开了一个全新的浏览器,但它似乎重新开始测试并且做得比我正在寻找的更多。

我最幸运的选择是对一个完全不同的URL执行.get(),然后使用哈希更改的URL(下面的代码)执行另一个.get()。这在浏览器中做了我想要的,但由于某种原因,第二个.get()挂起。

如何获取URL哈希更改以强制刷新?

beforeEach(async () => {
    //First GET (to a different hash)
    await browser.driver.get(browser.baseUrl);
});

it('should load ID from URL', async () => {
    //Load the signup URL
    let fakeId = '12345abcd';
    console.log("step 1: " + new Date().toISOString());
    await browser.driver.get(browser.baseUrl + `#/signup?id=${fakeId}`);

    //BROWSER NAVIGATES PROPERLY, BUT NEVER GET THE CONSOLE OUTPUT BELOW
    console.log("step 2: " + new Date().toISOString());

    var loginButton = element(by.id('btnLoginHeader'));
    var untilLoginVisible = ExpectedConditions.visibilityOf(loginButton);
    await browser.wait(untilLoginVisible, 20000);

    //NEVER GET THE CONSOLE OUTPUT BELOW
    console.log("step 3: " + new Date().toISOString());

    //<snip>
    expect(true);
});

1 个答案:

答案 0 :(得分:1)

每当您更改“location”对象的哈希属性时,浏览器都不会刷新页面。

我认为在这种情况下,可以通过在散列之前的路径中添加一些“查询字符串”来强制完整页面重新加载,这将加载页面。

类似的东西:

    await browser.driver.get(browser.baseUrl + `?_fake=1#/signup?id=${fakeId}`);