2013-05-03 88 views
0

我一直在尝试执行测试来检查表单中的字段验证。检查特定的字段错误信息很简单,但我也尝试了一个通用检查来识别错误类的字段的父元素。但是这不起作用。使用Selenium Webdriver检查字段错误

有错误的字段具有以下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总是失败。我相信../的升级水平与命令行导航一样 - 是不是这种情况?

回答

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")) 
+0

谢谢,我喜欢这样做。但它似乎抓住错误parent_div只适用于输入字段。在多个选择框或单选按钮的父项似乎是选项标签&开始执行'./../../'键入东西是我想避免的。 – 2013-05-03 10:33:25

1

当你使用一个相关的XPath(基于现有元素),它需要开始./这样的:只有在

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

./你就可以开始指定的XPath节点等

相关问题