2013-05-03 5 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을 찾은 다음 부모 div.error을 찾고 NoSuchElementException을 확인하는 대신 클래스 error이 포함되어 있는지 확인하십시오.

..이 상위 레벨로가는 길이므로 ../div은 부모의 자식 div을 의미합니다. ./ 당신이 XPath는 노드 등을 지정 시작할 수 있습니다

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

후에 만 ​​:

당신이 (기존 요소를 기반으로) 상대 XPath를 사용하고
// 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 잡는 것 입력 필드에 대해서만 작동합니다. 여러 개의 선택 상자 또는 라디오 버튼의 경우 부모가 옵션 라벨 인 것 같고'./../../ '형식의 것들은 내가 피하고 싶습니다. –

1

는,이 같은 ./로 시작해야

관련 문제