如何检查 ElementArrayFinder 是否包含子字符串
How to check does ElementArrayFinder contains substring
我有一个 ElementArrayFinder
,其中包含一整行 table。
我想做一个断言来检查它是否有一个子串(在哪里都无所谓)。
const row: ElementArrayFinder = $$('div > div#myRow');
已解决 row.getText()
returns 的承诺:
['id', 'some data', 'expected text xoxo', 'some more data']
最接近的解:
expect(row.getText()).to.eventually.deep.includes('expected text');
returns:
AssertionError: expected [ Array(4) to deep include 'expected text']
expect(row.getText()).to.eventually.deep.includes('expected text xoxo');
通过
感谢任何建议。
我查看了 chai 的文档,这似乎是不可能的。
我可以看到两种解决问题的方法:
- 解决对
string[]
的承诺,然后遍历每个元素并使用 .includes('expected text')
. 检查
- 在
ElementArrayFinder
上使用量角器的 filter()
,在每个元素上使用 getText()
。使用 if 语句检查 .includes('expected text')
,并检查新 ElementArrayFinder
的长度是否大于 0.
为了避免误解 - elementArrayFinder 可能没有元素的文本值。最好的想法是 elementFinder 是一个参考如何在页面上找到你的元素(只是方向)
现在,由于您现在可以 .getText()
您的 elementArrayFinder,因此您可以很容易地完成您想要做的事情。但在此之前请记住,只有当您的数组元素恰好等于您的 'expected text'
时,先前的答案才有效。例如,
expect('expected text xoxo', 'some more data']).toContain('expected text xoxo') // this succeed
expect('expected text xoxo', 'some more data']).toContain('expected text') // this fails
// because 'expected text xoxo' !== 'expected text'
但是如果你想检查它们数组的任何元素是否部分包含一个字符串,那么使用 vanilla js array.some()
let arr = ['id', 'some data', 'expected text xoxo', 'some more data'];
expect(arr.some((item)=>{return item.includes('expected text')})).toBe(true)
我有一个 ElementArrayFinder
,其中包含一整行 table。
我想做一个断言来检查它是否有一个子串(在哪里都无所谓)。
const row: ElementArrayFinder = $$('div > div#myRow');
已解决 row.getText()
returns 的承诺:
['id', 'some data', 'expected text xoxo', 'some more data']
最接近的解:
expect(row.getText()).to.eventually.deep.includes('expected text');
returns:
AssertionError: expected [ Array(4) to deep include 'expected text']
expect(row.getText()).to.eventually.deep.includes('expected text xoxo');
通过
感谢任何建议。
我查看了 chai 的文档,这似乎是不可能的。
我可以看到两种解决问题的方法:
- 解决对
string[]
的承诺,然后遍历每个元素并使用.includes('expected text')
. 检查
- 在
ElementArrayFinder
上使用量角器的filter()
,在每个元素上使用getText()
。使用 if 语句检查.includes('expected text')
,并检查新ElementArrayFinder
的长度是否大于 0.
为了避免误解 - elementArrayFinder 可能没有元素的文本值。最好的想法是 elementFinder 是一个参考如何在页面上找到你的元素(只是方向)
现在,由于您现在可以 .getText()
您的 elementArrayFinder,因此您可以很容易地完成您想要做的事情。但在此之前请记住,只有当您的数组元素恰好等于您的 'expected text'
时,先前的答案才有效。例如,
expect('expected text xoxo', 'some more data']).toContain('expected text xoxo') // this succeed
expect('expected text xoxo', 'some more data']).toContain('expected text') // this fails
// because 'expected text xoxo' !== 'expected text'
但是如果你想检查它们数组的任何元素是否部分包含一个字符串,那么使用 vanilla js array.some()
let arr = ['id', 'some data', 'expected text xoxo', 'some more data'];
expect(arr.some((item)=>{return item.includes('expected text')})).toBe(true)