codeceptjs - использование src в switchTo

Можно ли как-то задать в switchTo, чтобы фрейм находился по ссылке?
Есть у меня например такой фрейм:

Если я использую I.switchTo('iframepanel-1126-iframeEl'); то все ок. Но id постоянно меняется, поэтому тест фейлица. Как можно задать в switchTo поиск не по id, а по src например? Т.е что-то типа I.switchTo(iframe src="well_analyze/detailcard").

Можно попробовать переключаться не по id, а по порядковому номеру iframe на странице.
Вот так:

I.switchTo(1);

Для поиска по src нужно писать свой хелпер:

    switchToIframeBySrc(src) {
        let client = this.helpers['WebDriverIO'].browser;
        client.waitForVisible("iframe[src='" + src + "']", 3000);
        return client.element("iframe[src='" + src + "']").then((frame) => {
            console.log(frame);
            return client.frame(frame.value);
        });
    }
4 Likes

спасибо! добавил, а как его использовать? что-то не получается:

I.switchToIframeBySrc(‘well_analyze/detailcard’)
[2] Queued | switchToIframeBySrc: well_analyze/detailcard
[2] Queued | ask for next step
Emitted | step.before (I switch to iframe by src “well_analyze/detailcard”)

  • I switch to iframe by src “well_analyze/detailcard”
    Emitted | step.after (I switch to iframe by src “well_analyze/detailcard”)
    FAIL $ is not defined

Прошу прощения, поправил код )
Попробуйте ещё раз.

I.switchToIframeBySrc(‘well_analyze/detailcard’)
[2] Queued | switchToIframeBySrc: well_analyze/detailcard
[2] Queued | ask for next step
Emitted | step.before (I switch to iframe by src “well_analyze/detailcard”)

  • I switch to iframe by src “well_analyze/detailcard”
    Emitted | step.after (I switch to iframe by src “well_analyze/detailcard”)
    FAIL Converting circular structure to JSON

Надо всё-таки добраться до машины с СodeceptJS )
Ещё раз поправил. Пишите если не поможет.

Добрался. Теперь всё должно работать

ОООгромное спасибо, теперь работает!