У меня есть тесты транспортира, работающие с Selenium, с помощью IEDriverServer (32 бит). У меня возникли проблемы с <select>
тегами, которые не были нажаты, и показывая их варианты.Проблема с тегом select в IE с помощью Protractor
Вот мой conf.js:
exports.config = {
// The address of a running selenium server.
seleniumAddress: 'http://localhost:4444/wd/hub',
// Capabilities to be passed to the webdriver instance.
multiCapabilities: [
{
browserName: 'internet explorer',
ignoreProtectedModeSettings: true,
ignoreZoomSetting: true,
nativeEvents: false
}
//,
//{
// browserName: 'chrome'
//}
],
baseUrl: String(process.env.COMPUTERNAME.toLowerCase()) === String('build') ? 'http://dev/' : 'http://' + process.env.COMPUTERNAME + '/',
// can use 'suites' instead of 'specs' - check api documentation
suites: {
dashboard: 'dashboard/myCallbacksWidget_spec.js',
employees: 'employees/employees_spec.js',
lead: 'lead/lead_spec.js',
},
// Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 80000
},
allScriptsTimeout: 80000,
onPrepare: function() {
browser.driver.manage().window().maximize();
if (process.env.TEAMCITY_VERSION) {
require('jasmine-reporters');
jasmine.getEnv().addReporter(new jasmine.TeamcityReporter());
};
//var ScreenShotReporter = require('protractor-screenshot-reporter');
var ScreenShotReporter = require('protractor-html-screenshot-reporter');
var path = require('path');
jasmine.getEnv().addReporter(new ScreenShotReporter({
baseDirectory: 'tmp/report',
pathBuilder: function pathBuilder(spec, descriptions, results, capabilities) {
return descriptions.join('-');
}
//takeScreenShotsOnlyForFailedSpecs: true
}));
}
};
Вот мой тест:
describe('Lead Details Test', function() {
var arrowDown = '\uE015';
it('should open the first lead', function() {
browser.get('Slate.Iva/#/search-leads');
var firstItem = element(by.repeater('row in renderedRows').row(0));
firstItem.evaluate('onDblClickRow(row)');
expect(element(by.id('leadName')).isPresent()).toBe(true);
});
it('should select reason for difficulty', function() {
var reasonForDifficulty = element(by.id('reasonForDifficultySelect'));
expect(reasonForDifficulty.isPresent()).toBe(true);
reasonForDifficulty.click().sendKeys(arrowDown).sendKeys(protractor.Key.ENTER);
var saveButton = element(by.id('saveLead'));
saveButton.click();
browser.refresh();
var firstOption = element.all(by.options('item.id as item.name for item in leadData.reasonForDifficultyTypes')).first();
expect(firstOption.getText()).toEqual('Cosmetic Surgery');
});
});
Когда я reasonForDifficulty.click()
, он выдвигает на первый план <select>
но SendKeys не похожа на работу.
Этот код работает, если выбранный выпадающий список <select>
.
Я использую Protractor 2.0.0, Selenium 2.45.0 и IEDriverServer 2.45.0.0. Я также работаю на Windows 8.1 и имею IE11.
Есть ли обходной путь для этого или я что-то пропустил в своем коде?
Работает ли он с .sendKeys (protractor.Key.ARROW_DOWN)? EDIT: альтернативно вы можете выбрать опции в выпадающем меню, выполнив что-то похожее на нижеследующее var value = 'было слишком сложно; reasonForDifficulty.element (by.cssContainingText ('option', value)). Click() – Sirk
Привет @Sirk, это работает: 'var value = 'было слишком сложно';' reasonForDifficulty.element (by.cssContainingText (' option ', value)). click() ' Не могли бы вы добавить это как ответ, и я его приму. Благодарю. – Msinn22