我尝试使用selenium-webdriver
编写裸骨单元测试。为了正确测试我的应用程序,我需要用cookie准备每个测试用例。
我正在尝试执行以下操作:
it('should set cookies', async function() {
const driver = new webdriver.Builder().forBrowser('chrome').build();
driver.manage().window().setSize(800, 600);
await driver.manage().addCookie({
name: 'KEY',
value: 'COOKIE-VALUE',
domain: '.my.domain',
path: '/',
secure: false
});
await driver.get('http://test.my.domain');
// test following....
});
我的测试运行(即调用addCookie
不会抛出/拒绝),但是当浏览器对我的应用程序发出请求时,将不会使用设置的cookie值。
当我尝试记录设置的cookie时:
await driver.manage().addCookie({
name: 'KEY',
value: 'COOKIE-VALUE',
domain: '.my.domain',
path: '/',
secure: false
});
const set = await driver.manage().getCookies();
console.log('set', set);
它会告诉我没有设置cookie:
set []
我还挖掘了selenium-webdriver
的来源,并且能够使用调试器找出将构造正确的cookie字符串并enqueued here。
如何正确添加cookie以便驱动程序实例使用它?
对于那些对async/await
感到疑惑的人,我使用以下方法禁用了托管的承诺:
webdriver.promise.USE_PROMISE_MANAGER = false;
答案 0 :(得分:2)
方法 $scope.loadtable = function (task){
var bgUrl = "cloudantlink";
$http.get(bgUrl)
.success(function (response) {
var filePromises =[];
for(var i =0;i<response.rows.length;i++){
var fileUrl = "cloudantURL";
// Saving the promises
filePromises[i] = $http.get(fileUrl, {responseType:'arraybuffer'})
.then(function success(response) {
var file = new Blob([response], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
// This will be the result when the promise is resolved
return $sce.trustAsResourceUrl(fileURL);
}, function error(data) {
});
}
// Waiting for the promises
$q.all(filePromises).then(function(fileUrls)
{
// fileUrls contain the results returned by the success callback
$scope.TableData = fileUrls.map(function(url) {
return { 'download' : '<a href=\"'+url+'\">' + url+'</a>', };
})
$scope.loadTable();
})
}).error(function(data){
});
向当前域添加Cookie,因此您首先必须导航到目标网址以设置域名:
addCookie
https://w3c.github.io/webdriver/webdriver-spec.html#add-cookie