Примечание. Я предполагаю, что component1
на самом деле является действительным именем тега пользовательского элемента (содержащим da sh).
page.find('app-home >>> component1 >>> #div1')
Использование >>>
несколько раз в настоящее время невозможно (см. source ). >>>
не является официальным селектором CSS, поэтому его реализация полностью зависит от трафарета. js.
component1.find(':host >>> #div1')
Этот или ваши аналогичные подходы также невозможны, так как вызов .find
в E2EElement
можно найти только элементы, являющиеся дочерними элементами этого элемента, но не сам элемент хоста.
Одно из решений - полностью перейти в контекст браузера:
await page.evaluate(() => {
// this function will run in the browser context, not
// in the Node.js context that the test is executed in.
const appHome = document.querySelector('app-home');
const comp1 = appHome.shadowRoot.querySelector('component1');
const div1 = comp1.shadowRoot.querySelector('#div1');
div1.click();
});
await page.waitForChanges();
Вы можете преобразовать это в помощника, однако я согласен, что было бы хорошо, если бы Stencil. js предоставил для этого надлежащий API. Разрешить многократное использование селектора >>>
было бы неплохо. Я предлагаю вам открыть запрос функции в репозитории Stencil. js.