Я должен проверить один сценарий. Пользователь вводит желаемый URL для текста, который связан с кнопкой. Когда пользователь нажимает эту кнопку, пользователь будет перенаправлен на набранный URL.
Когда я делаю утверждение для новой вкладки (Google), вывод всегда похож на «localhost: 8080», который является моей предыдущей вкладкой (currentPage).
Я думаю, мне следует установить новую вкладку на "это", но я не мог понять это. Если вы можете помочь мне, я буду признателен.
linkTest.spec.js
module.exports = {
tags: ['component', 'linkTest'],
before: function(client, done) {
this.currentPage = client.maximizeWindow().page.linkTestPage();
this.currentPage
.navigate(client.globals.devUrl)
.waitForElementVisible('body', 60000)
.customPerform(function() {
done();
});
},
'CASE ID - Case Name'() {
let googleUrl = 'https://www.google.com/';
this.currentPage
.checkInitialElements()
.setExternalUrlText(googleUrl)
.clickLinkLabel();
// Handle with new tab
this.client.windowHandles(function(result) {
let googleTab = result.value[1]; // New Google tab index
this.switchWindow(googleTab) // Switch to Google tab
.assert.urlContains('Google'); // Verify new tab is Google
});
},
after: function(client, done) {
client.end().customPerform(done);
},
};
customPerform.js
exports.command = function(fn, callback) {
this.perform(fn);
if (typeof callback === 'function') {
callback.call(self);
}
return this; // allows the command to be chained.
};