2

我正在尝试svg使用 selector: 过滤图表上的元素Selector('.joint-type-mapping-record .v-line').withText('testElement')。但结果得到了一条消息,即在 DOM 中找不到元素。

我检查了 innerText 是否可用<tspan>,但它不是。然后我尝试添加 customDOMProperties ( addCustomDOMProperties({ innerText: (el) => el.innerText });),但出现错误:1) TypeError: Cannot redefine property: innerText

有什么方法可以处理<tspan>使用withText()吗?

这里的页面代码:

<g model-id="6c1b0506-321a-4c27-8a06-7f2bfa5851ed" data-type="mapping.Record" id="j_488" class="joint-cell joint-type-mapping joint-type-mapping-record joint-element joint-theme-default" magnet="false" transform="translate(-171,99)">
<text joint-selector="headerLabel" id="v-11781" font-size="20" xml:space="preserve" font-family="Galano Grotesque" font-weight="500" text-anchor="middle" text-vertical-anchor="middle" fill="#333333" transform="matrix(1,0,0,1,109,15)">
<tspan dy="0.3em" class="v-line">testElement</tspan></text></g>
4

1 回答 1

2

默认情况下,TestCafe 不会在 svg 元素中搜索 HTML 元素。为此,您可以使用使用客户端函数初始化的选择器。看看下面的例子:

import { Selector } from 'testcafe';

fixture `New Fixture`
    .page `https://xg35y.csb.app/`;

test('New Test', async t => {
    const getVlineElement = Selector(() => {
        const allVlineElements = document.querySelectorAll('.joint-type-mapping-record .v-line');

        return [].slice.call(allVlineElements)
            .filter(tspan => tspan.textContent === 'testElement')[0];
    });

    await t
        .expect(Selector(getVlineElement).textContent).eql('testElement');
});
于 2019-10-11T14:12:38.013 回答