场合
我正在尝试在Internet Explorer中运行一些自动化测试。他们已经在Firefox中运行良好,但出于某种原因,当我在浏览器窗口打开后不久打开开发人员工具时,他们只会在IE中按预期运行。
基本上,当dev工具关闭时,这两个测试彼此不兼容:
it('logs in', () => {
browser.get('/#/login');
element(by.model('vm.credentials.username')).sendKeys('noaccounts@neocles.io');
element(by.model('vm.credentials.password')).sendKeys('test1234');
element(by.css('#sign-in')).click();
expect(browser.driver.findElement(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);
expect(element(by.css('.account-list p:last-child')).getText()).toBe('AccountPage.NoAccountsForUser');
expect(browser.driver.findElement(by.css('#sign-in')).getAttribute('class')).not.toMatch(/\bloading\b/);
});
it('autoselects single account', () => {
browser.get('/#/login');
element(by.model('vm.credentials.username')).sendKeys('shopowner@neocles.io');
element(by.model('vm.credentials.password')).sendKeys('test1234');
element(by.css('#sign-in')).click();
expect(browser.getCurrentUrl()).toBe('http://localhost:8000/#/');
});
预期行为
因此,在两个测试中,它都在执行登录操作,这会导致后续请求中的Authorization标头设置为某个值。然后获取您有权访问的帐户列表,此列表基于通过Authorization标头发送的令牌。对于第一个测试,列表为空,对于第二个测试,应该有一个帐户。
实际行为
在第二次测试中,它似乎是使用在第一次测试期间设置的Authorization标头向服务器发出请求。要么是,要么在第一个请求中缓存XHR请求并在第二个请求中使用它。我无法确定,因为正如我所说的那样,当dev工具打开时它才有用,所以我无法验证这是发生了什么。
有什么想法吗?
答案 0 :(得分:0)
我会尝试在您的功能配置中将"ensure clean session"设置为true
:
在IEDriverServer启动IE之前定义清理浏览器缓存的能力。
capabilities: {
browserName: "internet explorer",
ensureCleanSession: true
},