在运行一些量角器测试时,我需要在测试之间刷新浏览器。我注意到只有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);
});
答案 0 :(得分:1)
每当您更改“location”对象的哈希属性时,浏览器都不会刷新页面。
我认为在这种情况下,可以通过在散列之前的路径中添加一些“查询字符串”来强制完整页面重新加载,这将加载页面。
类似的东西:
await browser.driver.get(browser.baseUrl + `?_fake=1#/signup?id=${fakeId}`);