TypeError:无法读取null的属性“createElement”

问题描述 投票:2回答:1

我正在尝试点击具有以下结构的侧边栏:

<div class=“sidebar”>
  <nav class=“subnav”>
    <ul>
      <li>
    <a class=“subnav-toggle”></a>
    <div>
      <ul>
        <li class=subnav-item>…</li>
        <li class=subnav-item>…</li>
        <li class=subnav-item>…</li>
      </ul>
    </div>
      </li>
      <li>…</li>
      <li>…</li>
      <li>…</li>
      <li>…</li>
    </ul>
  </nav>
</div>

我创建了以下页面模型:

(注意:我想在导航栏上获得更高级别的菜单项,而不是第二级<li>

import { Selector } from 'testcafe';

export class PageModel {
  constructor () {
    this.firstItem = Selector('.subnav > ul > li').nth(0);
    this.secondItem = Selector('.subnav > ul > li').nth(1);
    ...
  }
}

最后,我的测试脚本如下:

import { PageModel } from 'myclass';

const a_item = new PageModel();
...
test ('Sample test', async t => {
  await t
    .hover(a_item.firstItem);
});

Testcafe成功地盘旋在我选择的元素上。但是,我得到一个错误说TypeError: Cannot read property 'createElement' of null

我该如何解决这个问题?

**更新**

我根据我放在控制台上的查询更新了我的查询。

document.querySelectorAll('.subnav > ul > li')
NodeList(8) [li, li, li, li, li, li, li, li]
javascript testing automated-tests e2e-testing testcafe
1个回答
2
投票

使用您的选择器,

Selector('subnav').find('li > a').nth(0);

你正在选择第一个A,它是LI的直接子项,位于“subnav”之下。

我认为你真正想做的是找到“外部”列表的li元素,如下所示:

 Selector('.subnav > ul > li').nth(0);
© www.soinside.com 2019 - 2024. All rights reserved.