gpt4 book ai didi

javascript - Protractor :屏幕尺寸

转载 作者:搜寻专家 更新时间:2023-11-01 04:23:46 25 4
gpt4 key购买 nike

我使用这个属性来定义屏幕的宽度和高度:

var width = 1280;
var height = 600;
browser.driver.manage().window().setSize(width, height);

在 onPrepare() 方法中,但此代码对某些测试有效,但对所有测试无效。这是为什么?我不会在测试中重新定义屏幕尺寸。

问候,

强尼

编辑:我的 Node 版本是 0.10.33,带有 Protactor 2.5.1。

Protractor 的配置:

// Fichier de configuration pour Angular

exports.config = {
sauceUser: "",
sauceKey: "",

capabilities: {
'browserName': 'chrome',
'name': 'Protractor Circle CI'
},

specs: ["src/Bg/*Bundle/Tests/Angular/*Test.js"],
exclude: ['src/Bg/*Bundle/Tests/Angular/*AuthTest.js', 'src/Bg/*Bundle/Tests/Angular/*RapideTest.js'],

baseUrl: "http://bluegrey.circle.dev:8080/app_ci.php",

onPrepare: function() {
browser.driver.get('http://bluegrey.circle.dev:8080/app_ci.php/fr_FR/login');

browser.driver.findElement(by.id('username')).sendKeys('user@evolunium.fr');
browser.driver.findElement(by.id('password')).sendKeys('userpass');
browser.driver.findElement(by.id('_submit')).click();

return browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return /dashboard/.test(url);
});
}, 600000);

var width = 1280;
var height = 600;
browser.driver.manage().window().setSize(width, height);
},

jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
}
};

一个有效的测试示例:

describe("Carrière > Centre d'interêt", function () {
describe("Tests d'ajout et de suppression d'un centre d'interêt", function () {
beforeEach(function () {
// on compte le nombre d'element
elements = element.all(by.css('.bloc__defaut'));
elements.count().then(function (nbElementP) {
nbElement = nbElementP;
});
}, 60000);

it('GET /app_ci.php/fr_FR/dashboard/career/interest', function () {

browser.get('/app_ci.php/fr_FR/dashboard/career/interest');
}, 60000);

it("Ajout du centre d'interêt", function () {


// On clique sur ajouter
element(by.css('.btn-add-js')).click();

// On remplit le formulaire
browser.findElement(by.id('CentreInteret_intitule')).sendKeys('CentreInteret_intitule');
element(by.css('.u-btn-inverse')).click();

// on re-compte le nombre d'element
expect(elements.count()).toEqual(nbElement+1);
}, 60000);

it("Suppression d'un centre d'interêt", function () {

// On regarde si toutes les fenetres de suppressions sont cachés au début
expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy();

// On clique sur supprimer
element(by.css('.u-btn-alert')).click();

// On regarde si la fenetre de confirmation de suppression est présente
expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeTruthy();

// On clique sur supprimer
element(by.css('.btn-supprimer-js')).click();

// On regarde si l'element est caché
expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy();

}, 60000);
});
});

还有一个失败的测试:

describe('Carrière > Experience Pro', function () {
describe("Tests d'ajout et de suppression d'une experience pro", function () {
beforeEach(function () {
// on compte le nombre d'element
elements = element.all(by.css('.bloc__defaut'));
elements.count().then(function (nbElementP) {
nbElement = nbElementP;
});
}, 60000);

it('GET /app_ci.php/fr_FR/dashboard/career/professionalexperiences', function () {

browser.get('/app_ci.php/fr_FR/dashboard/career/professionalexperiences');
}, 60000);

it('Vérification si lors du clique de la checkbox le champs date se désactive', function () {
// On clique sur ajouter
element(by.css('.btn-add-js')).click();

// On regarde si par defaut les champs ne sont pas désactivés (= active)
expect(element(by.id('ExperiencePro_dateFin_day')).getAttribute('disabled')).toBeFalsy();
expect(element(by.id('ExperiencePro_dateFin_month')).getAttribute('disabled')).toBeFalsy();
expect(element(by.id('ExperiencePro_dateFin_year')).getAttribute('disabled')).toBeFalsy();

// On clique
element(by.id('ExperiencePro_enPosteajout')).click();

// On regarde si les champs sont desactivés
expect(element(by.id('ExperiencePro_dateFin_day')).getAttribute('disabled')).toBeTruthy();
expect(element(by.id('ExperiencePro_dateFin_month')).getAttribute('disabled')).toBeTruthy();
expect(element(by.id('ExperiencePro_dateFin_year')).getAttribute('disabled')).toBeTruthy();

// On regarde s'ils se redésactive
element(by.id('ExperiencePro_enPosteajout')).click();
expect(element(by.id('ExperiencePro_dateFin_day')).getAttribute('disabled')).toBeFalsy();
expect(element(by.id('ExperiencePro_dateFin_month')).getAttribute('disabled')).toBeFalsy();
expect(element(by.id('ExperiencePro_dateFin_year')).getAttribute('disabled')).toBeFalsy();
}, 120000);

it("Réglage du format de date", function () {


// Format mois/année
element(by.id('reglageDate-js')).click();
element(by.id('ExperiencePro_formatDate_1')).click();
expect(element(by.id('ExperiencePro_dateDebut_day')).isDisplayed()).toBeFalsy();
expect(element(by.id('ExperiencePro_dateDebut_month')).isDisplayed()).toBeTruthy();
expect(element(by.id('ExperiencePro_dateDebut_year')).isDisplayed()).toBeTruthy();

// Format année
element(by.id('reglageDate-js')).click();
element(by.id('ExperiencePro_formatDate_2')).click();
expect(element(by.id('ExperiencePro_dateDebut_day')).isDisplayed()).toBeFalsy();
expect(element(by.id('ExperiencePro_dateDebut_month')).isDisplayed()).toBeFalsy();
expect(element(by.id('ExperiencePro_dateDebut_year')).isDisplayed()).toBeTruthy();

// Format année
element(by.id('reglageDate-js')).click();
element(by.id('ExperiencePro_formatDate_0')).click();
expect(element(by.id('ExperiencePro_dateDebut_day')).isDisplayed()).toBeTruthy();
expect(element(by.id('ExperiencePro_dateDebut_month')).isDisplayed()).toBeTruthy();
expect(element(by.id('ExperiencePro_dateDebut_year')).isDisplayed()).toBeTruthy();


}, 60000);

it("Ajout de l'experience", function () {


// On remplit le formulaire
browser.findElement(protractor.By.css('#ExperiencePro_dateDebut_day option[value="1"]')).click();
browser.findElement(protractor.By.css('#ExperiencePro_dateDebut_month option[value="12"]')).click();
browser.findElement(protractor.By.css('#ExperiencePro_dateDebut_year option[value="2000"]')).click();
element(by.id('ExperiencePro_enPosteajout')).click();
element(by.id('reglageDate-js')).click();
element(by.id('ExperiencePro_formatDate_0')).click();
browser.findElement(by.id('ExperiencePro_poste-ajout')).sendKeys('ExperiencePro_poste');
browser.findElement(by.id('ExperiencePro_entreprise')).sendKeys('ExperiencePro_entreprise');
browser.findElement(by.id('ExperiencePro_ville')).sendKeys('ExperiencePro_ville');

element(by.css('.u-btn-inverse')).click();

// on re-compte le nombre d'element
expect(elements.count()).toEqual(nbElement+1);
}, 60000);

it("Suppression d'une experience", function () {

expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy();

// On clique sur supprimer
element(by.css('.u-btn-alert')).click();

// On regarde si la fenetre de confirmation de suppression est présente
expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeTruthy();

// On clique sur supprimer
element(by.css('.btn-supprimer-js')).click();

// On regarde si la fenetre affirmant la suppression est apparue
expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy();

}, 60000);
});
});

编辑 2:这可能是视口(viewport)的问题而不是屏幕尺寸的问题。我用 SauceLabs 在 Chrome、Firefox、Safari 上试过,它是同样的问题。

最佳答案

您实际上是在调用 setSize() 之前从 onPrepare() 函数返回:

onPrepare: function() {
browser.driver.get('http://bluegrey.circle.dev:8080/app_ci.php/fr_FR/login');

browser.driver.findElement(by.id('username')).sendKeys('user@evolunium.fr');
browser.driver.findElement(by.id('password')).sendKeys('userpass');
browser.driver.findElement(by.id('_submit')).click();

// HERE!!
return browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return /dashboard/.test(url);
});
}, 600000);

var width = 1280;
var height = 600;
browser.driver.manage().window().setSize(width, height);
},

您应该删除“返回”,或者在它之前设置浏览器窗口大小。

您还可以返回由 setSize() 返回的 promise - 在这种情况下,protractor 将在执行测试之前等待解决 promise :

return browser.driver.manage().window().setSize(width, height);

他们现在甚至拥有这个“功能”documented :

onPrepare can optionally return a promise, which Protractor will wait for before continuing execution. This can be used if the preparation involves any asynchronous calls, e.g. interacting with the browser. Otherwise Protractor cannot guarantee order of execution and may start the tests before preparation finishes.

关于javascript - Protractor :屏幕尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33677458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com