2013-05-03 70 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節點等

相關問題