我一直在尝试实施测试以检查表单中的字段验证。检查特定的字段错误消息很简单,但我还尝试了一般检查以识别错误类的字段的父元素。然而,这不起作用。
包含错误的字段具有以下HTML;
<div class="field clearfix error ">
<div class="error">
<p>Please enter a value</p>
</div>
<label for="id_fromDate">
<input id="id_fromDate" type="text" value="" name="fromDate">
</div>
所以要检查错误,我有以下功能;
def assertValidationFail(self, field_id):
# Checks for a div.error sibling element
el = self.find(field_id)
try:
error_el = el.find_element_by_xpath('../div[@class="error"]')
except NoSuchElementException:
error_el = None
self.assertIsNotNone(error_el)
所以el
是输入字段,但是xpath总是失败。我相信../
以与命令行导航相同的方式上升到一个级别 - 这不是这种情况吗?
答案 0 :(得分:1)
早些时候误解了你的问题。您可以尝试以下逻辑:找到父div
,然后检查它是否包含类error
,而不是找到父div.error
并检查NoSuchElementException
。
由于..
是上层的方式,../div
表示父母的孩子div
。
// non-working code, only the logic
parent_div = el.find_element_by_xpath("..") # the parent div
self.assertTrue("error" in parent_div.get_attribute("class"))
答案 1 :(得分:1)
当您使用相对xpath(基于现有元素)时,它需要以./
开头,如下所示:
el.find_element_by_xpath('./../div[@class="error"]')
只有在./
之后才能开始指定xpath节点等。