0

我一直在尝试实施测试以检查表单中的字段验证。对特定字段错误消息的检查很简单,但我也尝试了通用检查来识别错误类的字段的父元素。然而,这不起作用。

有错误的字段具有以下 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 总是失败。我相信它../以与命令行导航相同的方式上升了一个级别 - 不是这样吗?

4

2 回答 2

1

当您使用相对 xpath(基于现有元素)时,它需要./像这样开始:

el.find_element_by_xpath('./../div[@class="error"]')

只有在./你可以开始指定 xpath 节点等之后。

于 2013-05-03T08:50:32.270 回答
1

之前误解了你的问题。您可以尝试以下逻辑:找到 parent div,然后检查它是否包含 class error,而不是找到 parentdiv.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"))
于 2013-05-03T07:50:42.973 回答