Мой проект имеет панель управления KPI со встроенными отчетами PowerBI через iFrames.Чтобы усложнить задачу, каждый визуал / диаграмма во встроенном iFrame фактически является другим iFrame.
Так что это может выглядеть примерно так:
<!-- Parent PowerBI report iFrame -->
<iframe src="app.powerbi.com/reportembed?123">
<!-- A line chart -->
<iframe src="app.powerbi.com/visial?123"></iframe>
<!-- A pie chart -->
<iframe src="app.powerbi.com/visial?234"></iframe>
</iframe>
Мне нужно загрузить тестирование этой панели инструментовчтобы увидеть, сколько времени требуется, чтобы iFrame и вложенные iFrames закончили загрузку с одновременными пользователями.
У меня есть проект с настройкой селена и мокко, чтобы выполнить несколько шагов.Я учусь на ходу, но в настоящее время я выполнил следующие шаги:
- Посетите страницу входа
- Введите учетные данные пользователя и отправьте форму
- Перейдите к URL-адресу панели мониторинга KPI
- Определите, что iFrame присутствует в DOM
Неразрешенные шаги: 5. Измерьте время загрузки для родительского iFrame 6. Я бы даже подумалвыборочная проверка нескольких выбранных вложенных iFrames для измерения их времени загрузки
Я подумал, что, возможно, я мог бы использовать API синхронизации навигации, чтобы получить время до domComplete родительского iFrame и дочерних iFrames.Оказывается, свойства производительности недоступны из-за перекрестных политик.Так что это не сработало:
// Test case
it('get iFrame load performance', () => {
// Locate parent iFrame via xpath
let parentIframe = By.xpath('//*[@id="embedContainer"]/iframe');
driver.wait(until.elementLocated(parentIframe, 90000)).then(() => {
// Execute JS on the current page
driver.executeScript(
'var iframe = document.getElementsByTagName("iframe")[0].contentWindow; console.log(iframe.contentWindow.performance.timing);'
)
});
});