【发布时间】:2015-05-05 14:50:34
【问题描述】:
我是量角器的新手。我正在尝试为与 salesforce 交互的 Web 应用程序编写测试。在测试开始时,它会显示一个 oauth2 弹出窗口,供用户授权应用程序。
当我在弹出窗口中调用 browser.driver.close() 时,它会停留在屏幕上并且我收到以下错误消息:
Failures:
1) get past the oauth2 should just get as far as possible, for now
Message:
NoSuchWindowError: no such window: target window already closed
from unknown error: web view not found
我的测试确实单击了弹出窗口中的最终“授权”按钮。这应该使弹出窗口自行关闭。当我手动单击它时它工作正常,但当量角器单击它时似乎不起作用。
oauth2 进程本身似乎工作正常,因为之后我可以看到来自 salesforce 的主窗口加载数据。
我很乐意将弹出窗口留在那里,但随后在测试中出现“元素不可见”错误。我认为这些错误是由显示在主窗口顶部的弹出窗口引起的。
我猜这个弹出窗口有一些与 browser.driver.close() 不兼容的配置。当我在调用 close() 之前尝试切换到主窗口时,它会正常关闭。
测试规范的相关部分如下。注释掉的块显示了我尝试过的一些实验。他们都没有工作。
有没有人有使用 salesforce oath2 弹出窗口的经验,并有任何建议?或者知道会导致这种行为的任何窗口配置?
describe('get past the oauth2', function () {
var page;
beforeEach(function () {
page = new AngularPage();
});
it('should just get as far as possible, for now', function () {
browser.get('http://localhost:8080/test/LocalTest.html#/templateManager');
browser.getAllWindowHandles().then(function (handles) {
// switch to the popup
browser.driver.ignoreSynchronization = true;
browser.driver.switchTo().window(handles[1]);
browser.driver.findElement(by.id('username')).click();
browser.driver.findElement(by.id('username')).sendKeys('test_user@test.com');
browser.driver.findElement(by.id('password')).sendKeys('test');
browser.driver.findElement(by.id('Login')).click();
browser.driver.wait(function () {
return browser.driver.isElementPresent(by.id('oaapprove'));
},
10000);
browser.driver.findElement(by.id('oaapprove')).click();
//browser.driver.ignoreSynchronization = false;
//browser.driver.switchTo().window(handles[0]);
browser.driver.close();
browser.driver.switchTo().window(handles[0]);
//browser.driver.close().then(function () {
//
// //to switch to the previous window
// browser.switchTo().window(handles[0]);
//
//});
【问题讨论】:
标签: angularjs salesforce protractor