Исходный вопрос:
с использованием
browser.switchToFrame(iframeEl);
Я могу переключиться на конкретное окно iframe, и все в порядке - щелчок по элементам и т. Д. Работает.
Но, дляпо любой причине, использование Selector
, когда iframe
является текущим контекстом, не работает.Я подозреваю, что это потому, что switchToFrame
является методом в экземпляре браузера, и я использую функцию Selector
, импортированную таким образом:
import { Selector } from 'testcafe';
Мой вопрос - хочу ли я выбрать конкретныйэлемент внутри iframe с использованием testcafe (например, для чтения его атрибутов HTML) - как мне подходить к нему?Я что-то упустил?
Более подробная информация из потока GitHub:
Более подробная информация: я создаю iframe с удаленным src
, и к этому iframe я позже добавлю немного HTML, CSSи JavaScript.Я на 100% уверен, что iframe
будет иметь элемент DOM, соответствующий моему запрошенному селектору, но все равно я получаю сообщение об ошибке: Cannot obtain information about the node because the specified selector does not match any node in the DOM tree.
Мой код выглядит примерно так:
const iframeEl = await Selector('a-iframe_inner[name="something"]');
if (await iframeEl.count === 0) {
await this.fBrowser.switchToMainWindow();
} else {
await this.fBrowser.switchToIframe(iframeEl);
}
const something = await Selector('.something');
А на строке с await Selector
код ломается.В других моих тестах, где я также получаю доступ к iframe и щелкаю некоторый элемент, используя await browser.click(someOtherThing);
, он работает безупречно.Я также могу прочитать состояние консоли iframe без проблем.
Я подозреваю, что содержимое элемента iframe
может быть еще не готово, но мне интересно, как я могу ждать, пока он не будет готов?Я попытался установить опцию timeout
для вызова Selector
, но это ничего не изменило.Можете ли вы поделиться какими-либо советами о том, как отложить получение селектора после перехода в контекст iframe?
Решение:
Оказалось, что это действительно ошибка с моей стороны.Сожалею.Для будущих поколений: переключение Iframe и использование селекторов должно работать нормально, по крайней мере, в TestCafe v0.20.1
.Просто убедитесь, что ваши селекторы совпадают, и вы действительно находитесь в контексте iframe, а не просто думаете, что вы там