在属性值中查找具有特殊字符的元素

Find element with special characters in attribute value

我有以下 html:

<textarea class="input-validation-error form-control" cols="20" 
    data-val="true" data-val-regex="Invalid input" 
    data-val-regex-pattern="([a-zA-Z][0-9]{11}[a-zA-Z0-9][^\S\r\n]*\r\n)*[a-zA-Z][0-9]{11}[a-zA-Z0-9][\s]*" 
    data-val-required="Please enter valid values" 
    id="val" name="values" rows="9"></textarea>

我正在尝试断言 element 以进行验证:

expect(page).to have_css(
    "textarea[data-val-regex-pattern=([a-zA-Z][0-9]{11}[a-zA-Z0-9][^\S\r\n]*\r\n)*[a-zA-Z][0-9]{11}[a-zA-Z0-9][\s]*]") 

但我一直收到 invalid selector 错误。我试过转义特殊字符,也将整个值用单引号和双引号引起来。这应该断言什么?

您在这里遇到的问题是您必须对 ruby 字符串和 CSS 字符串进行转义。导致您出现问题的角色是 \ 最终需要双重转义的角色,成为 \\\\

expect(page).to have_css('textarea[data-val-regex-pattern="([a-zA-Z][0-9]{11}[a-zA-Z0-9][^\\S\\r\\n]*\\r\\n)*[a-zA-Z][0-9]{11}[a-zA-Z0-9][\\s]*"]')

尝试使用:

expect(page).to have_css("textarea[data-val-regex-pattern^='([a-zA-Z]'])