Вы используете регулярное выражение для сопоставления ваших строк ($ означает конец строки / строки) ... если вы действительно хотите использовать регулярное выражение, я бы порекомендовал:
...
Pattern.compile(
"Please enter a password of between 6 and 20 characters\\. You may use lower or upper case letters a-z, numbers 0-9 and the following characters !\"£\\$%").
matcher(
...
В противном случаеВы могли бы сделать:
assertTrue(
selenium.getText("//form[@id='registrationForm']/fieldset[3]/div/div[2]/div/p")
.contains(
"Please enter a password of between 6 and 20 characters. You may use lower or upper case letters a-z, numbers 0-9 and the following characters !\"£$%"
));