我的URL包含分配给特定项目的数字,因此可能是1、2、...、999等。
示例:https://www.test.com/items.889218.html
我要作这样的Assert:
cy.url().should('contain', '/items.').and('have', 'number')
我试着举例:
cy.url().invoke('text').should('match', /^[0-9]*$/)
或
cy.location().should((loc) => {
expect(loc.pathname).to.contain(/^[0-9]*$/);
});
也提供这种路径:
"/items\.+[0-9]+.html/"
但这两个例子都不起作用。有什么想法如何处理这种情况吗?
3条答案
按热度按时间xt0899hw1#
对于示例
https://www.test.com/items.889218.html
,最简单的正则表达式是但如果你不在乎数字的话
参考编号TypeError: expect(...).to.startsWith is not a function
bmp9r5qi2#
答案:
说明:
因为使用了
$
选择器,所以正则表达式查询也会查看字符串的末尾,但示例URL的末尾是.html
。选择是将.html
添加到模式中,还是删除$
选择器。试试看:
或者至少删除字符串匹配结尾处的
$
在regexr上测试
解释(针对备注中的问题):
预期/items.8655.html包含/项目。/[0-9]+/失败
此模式在
items.number
之间包含一个.
。如果需要覆盖此新变体和前一个。(\/|\.)+
将匹配一个或多个,\
和/或.
因此,上述更改将匹配如下URL:
mu0hgdu03#
您不需要调用从
cy.url
生成的值的文本内容,因为它已经是一个字符串。此外,您的正则表达式不正确。它只匹配以数字开始、包含数字和以数字结尾的字符串。
修复上面的,你可以有这样的东西...