在属性值

时间:2017-05-22 14:53:23

标签: ruby selenium selenium-webdriver capybara

我有以下 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错误。我已经尝试转义特殊字符,也包括单引号和双引号中的整个值。应该断言什么?

2 个答案:

答案 0 :(得分:1)

你在这里遇到的问题是你必须为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]*"]')

答案 1 :(得分:0)

尝试使用:

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