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

Javascript 量角器测试:当URL哈希更改时强制刷新的选项,javascript,protractor,e2e-testing,Javascript,Protractor,E2e Testing,在运行一些量角器测试时,我需要在测试之间刷新浏览器。我注意到只有URL散列更改()时,这不起作用 我尝试调用.refresh()或导航.refresh()以强制浏览器刷新。那似乎没什么作用。可能是因为上面提到的问题,因为只有哈希改变了 我尝试了.restart(),它确实打开了一个新的浏览器,但它似乎重新启动了测试,并且做了比我期待的更多的事情 我遇到的最接近的选项是对一个完全不同的URL执行.get(),然后执行另一个.get(),并更改了哈希URL(下面的代码)。这就是我在浏览器中想要的,但

在运行一些量角器测试时,我需要在测试之间刷新浏览器。我注意到只有URL散列更改()时,这不起作用

我尝试调用
.refresh()
导航.refresh()
以强制浏览器刷新。那似乎没什么作用。可能是因为上面提到的问题,因为只有哈希改变了

我尝试了
.restart()
,它确实打开了一个新的浏览器,但它似乎重新启动了测试,并且做了比我期待的更多的事情

我遇到的最接近的选项是对一个完全不同的URL执行
.get()
,然后执行另一个
.get()
,并更改了哈希URL(下面的代码)。这就是我在浏览器中想要的,但由于某种原因,第二个
.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);
});
beforeach(异步()=>{
//第一次获取(到另一个散列)
等待browser.driver.get(browser.baseUrl);
});
它('应该从URL加载ID',异步()=>{
//加载注册URL
设fakeId='12345abcd';
log(“步骤1:+newdate().toISOString());
等待browser.driver.get(browser.baseUrl+`/signup?id=${fakeId}`);
//浏览器可以正常导航,但从未获得下面的控制台输出
log(“步骤2:+newdate().toISOString());
var loginButton=element(by.id('btnLoginHeader');
var untilLoginVisible=预期条件。可视性(登录按钮);
等待浏览器。等待(直到可见,20000);
//永远不要得到下面的控制台输出
log(“步骤3:+newdate().toISOString());
//
期望(真);
});

无论何时更改“location”对象的哈希属性,浏览器都不会刷新页面

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

诸如此类:

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

好的评论-这在很多地方都会有帮助,而且可能是更“合适”的URL结构(将查询参数放在哈希之前)。我确实有一些测试具有完全相同的参数和散列,因此我仍然需要强制刷新(或在一个测试中执行2个
.get()
请求)。通过该散列,我假设您使用的是
Angularjs
,我的建议将适用于需要
angulars
搜索
部分的场景。