gpt4 book ai didi

angularjs - 使用 Protractor 在 IE 中选择标签的问题

转载 作者:行者123 更新时间:2023-12-01 05:04:42 25 4
gpt4 key购买 nike

我有使用 IEDriverServer(32 位)与 Selenium 一起运行的 Protractor 测试。我在使用 <select> 时遇到了一些问题标签未被点击并显示他们的选项。

这是我的 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。

是否有解决方法或我在代码中遗漏了什么?

最佳答案

根据我的评论,以下内容应该有效;

var value = 'It was too difficult';
reasonForDifficulty.element(by.cssContainingText('option', value)).click();

这将选择下拉选项“太难了”,如果您正在测试特定选项对您的应用程序的影响,这很好。

或者,如果您想按编号进行操作,则可以使用
 var optionNum = 5
var options = reasonForDifficulty.all(by.tagName('option'))
.then(function(options){
options[optionNum].click();
});

第二个将选择下拉列表中的第 6 个选项(当然 0 是第一个),如果您并不真正关心选择了哪个选项,这是一个不错的选择,如果您正在测试数据的应用程序则更好不断变化,它使您的测试更加强大(在我看来)。

关于angularjs - 使用 Protractor 在 IE 中选择标签的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30161569/

25 4 0