页面加载后无法找到嵌套元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了页面加载后无法找到嵌套元素相关的知识,希望对你有一定的参考价值。

在测试规范中,我需要单击主页上的按钮,然后等待完全加载的页面。该按钮只被点击一次,当我重新运行规范它失败,因为量角器无法到达element(by.tagName('app-banner')上的嵌套元素的末尾

it('should click a button',  async () => {
    const EC = protractor.ExpectedConditions;
    page.login().then(() => {
      browser.wait(element(by.id('Body')).element(by.tagName('app-root')).isDisplayed, 5000).
      then(async () => {
        browser.wait(await element(by.tagName('app-root')).element(by.tagName('app-banner')).isDisplayed, 5000).
        then(async () => {
         await element(by.tagName('app-root')).element(by.tagName('app-banner')).
          element(by.id('topbar')).element(by.id('user-display')).click();
          });
        });
      });
  });

- html层次结构

<app-home>
   <div _ngcontent-c1 class=”layout-wrapper”>
     <app-banner>
       <div _ngcontent-c3 id=”topbar”>
          <a id=”user-display”>
             <bar-switchuser>
                <span>
                    <p-dropdown>
                    </p-dropdown>
                </span>
             </bar-switchuser>
           </a>
        </div>
    <app-banner>
</div>

答案

您已定义ExpectedConditions但不使用它。为什么?用它代替isDisplayed

await browser.wait(ExpectedConditions.visibilityOf(element(by.id('Body')).element(by.tagName('app-root')), 5000, "Element is not visible in 5 sec")

以上是关于页面加载后无法找到嵌套元素的主要内容,如果未能解决你的问题,请参考以下文章

jquery 实践操作:div 动态嵌套页面

Selenium在页面重新加载后不会在页面上找到元素

Android:NullPointerException 无法将数据库加载到片段内的列表视图中

Jquery为嵌套表选择td

jQuery 是如何判断HTML页面加载完毕的?它的原理是啥?

如何自动完成自动填充文本框