我已经设置了我的 Selenium (v 2.3) 测试的功能,以检查某些错误消息的存在,这些错误消息一直运行良好,直到我正在检查的元素有首字母缩略词。
我的函数获取页面中的所有错误,然后搜索div预期的消息;
# el is the error div element
error_el = el.find_element_by_xpath('p[contains(text(), "{0}")]'.format(error_text))
...
self.assertIsNotNone(error_el) # make sure it actually found something
我从我的测试中调用self.assertFieldError('My error message')它并且它完美地工作,直到'My error message'包含一个首字母缩写词。如果存在首字母缩略词,则 Selenium 不会将我的字符串与段落匹配。
我目前对此的解决方案是检查页面源中的字符串,但如果它是多次出现的字符串,这并不理想。
是否可以忽略首字母缩写词标签或改进我的 xpath 以允许文本或带有首字母缩写词的文本?我一直认为该text()方法的操作与用户看到的完全一样,并且它会自动忽略首字母缩略词。
编辑
错误消息使用 Javascript 附加到字段,该 Javascript 通过字段名称从 Django 表单获取字段标签。尽管据我所知,这与 Selenium 无关。
HTML:
<div class="field">
<div class="error">
<p>My <acronym title="Error">ERR</acronym> message</p>
</div>
<label for="id_myField">My <acronym title="Error">ERR</acronym> message</label>
<input id="id_myField" type="text">
</div>