Я использую webdriver-io v3.x в сочетании с Mocha. Чтобы иметь возможность тестировать идентичные компоненты на разных сайтах, я хотел бы передать аутсорсинг на дополнительную функцию. Для этого мне нужно передать объект браузера через какой-то PassByReference для этой дополнительной функции. Как я могу это сделать?Как передать браузер webdriver-io Объект через PassByReference
Пример кода:
// [...]
// this function shall be callable from every TestCase.
var testObject = function(browser) {
return browser
.getText('.InfoText')
.then(function(txt) {
console.log('txt: ' + txt);
txt.should.equal('Information');
});
});
describe('Sample Test Suite', function() {
// go to a webpage for testing
before(function() {
browser
.url('http://example.com');
});
// refer to the test definitions in the function testObject(browser)
it('sample test case', function() {
return testObject(browser);
});
});
Я могу распечатать все атрибуты объекта браузера в функции TestObject, поэтому функция как
for(var attribute in browser) {
console.log('browsers attributes: ' + attribute);
};
бы перечислить все (и несколько больше) Функции webdriver-io, определенные в API:
$ browsers attributes: defer
$ browsers attributes: promise
$ browsers attributes: lastPromise
$ browsers attributes: desiredCapabilities
$ [...]
$ browsers attributes: getTabIds
$ browsers attributes: getTagName
$ browsers attributes: getText
$ browsers attributes: getTitle
$ browsers attributes: getUrl
$ browsers attributes: getValue
$ browsers attributes: getViewportSize
$ browsers attributes: hold
$ browsers attributes: isEnabled
$ browsers attributes: isExisting
$ browsers attributes: isSelected
$ browsers attributes: isVisible
$ [...]
Но, к сожалению, функция лоб ser.getText() в моем методе testObject, похоже, никогда не достигает блока then, так как он ничего не выводит на консоль.
Итак, мой вопрос: как я могу правильно передать объект браузера с его функциональными возможностями другому методу, чтобы я мог его полностью использовать?
Это не имеет ничего общего с проходом по ссылке, которая является термином, при вычислении значения передачи ссылки к ** переменному ** в функцию, чтобы функция могла изменять содержимое ** ** **. Вы передаете ссылку на объект в функцию через значение, которое вам нужно здесь. Проблема - это * время *, а не то, что вы проходите. –
Подробнее о тестировании async в Mocha (я * думаю * вы используете Mocha за селеновым битом): http://mochajs.org/#asynchronous-code Хотя он уверен, что мне кажется, что вы возвращаете обещание от ' testObject' и, в свою очередь, от 'it' callback ... –
@TJCrowder вы совершенно правы. Я забыл об этом. Большое спасибо за Вашу помощь! :) –