2014-10-19 13 views
0

이 질문은 이전에 일부 반복에서 묻는 것을 알고 있습니다. 하지만 API를 살펴본 후에도이를 수행하는 방법을 알 수는 없습니다.요소 존재 확인 셀렌

나는 웹을 통해 데이터를 긁어 싶어 나는 다음과 같은 코드가 있습니다

browser = webdriver.Firefox() 
browser.get(url) 
browser.find_element_by_xpath('//path') 

는 이제 find_element 부분은 실행하기 전에합니다. 사실 요소가 있는지 알고 싶습니다. 나는 해봤 다음

try: 
    browser.find_element_by_xpath('//path') 
except NoSuchElementException: 
    print ('failure') 

if (browser.find_element_by_xpath('//path')[0].size() == 0): 
    print ('failure') 

그러나 그들 중 어느 쪽이 API는 크기가() WebElement의 호출 기능과 예외가 find에 의해 던져 말한다하더라도, 작업을 방법의 계열. 왜 그런 일을하지 않았는지 나는 이해하지 못한다. 그러나 누구든지 나에게 설명과 실례를 줄 수 있다면 크게 감사하겠다.

답변

2

첫 번째 코드 단편은 요소가 누락되면 NoSuchElementException을 제기해야합니다. 그것이 그렇게하지 않으면 귀하의 질문에있는 정보에서 왜 그런지 확실하지 않습니다. (또는 어쩌면 당신은이이 요소를 찾을 것으로 예상 하지만 하나를 찾을 수합니까?)

find_element_... 방법 WebElement 객체가 아닌 객체의 목록을 반환하기 때문에 제 2 회 미리보기가 작동하지 않을 수 있습니다. 복수 반환 목록에있는 요소를 찾을 수

if len(browser.find_elements_by_xpath('//path')) == 0: 
    print ('failure') 

주 복수 find_elements_... 기능을, 그들은 아무것도 찾을 수없는 경우,리스트의 길이는 제로이다 : 당신은해야 할 것입니다.

그런데 WebElementsize() 메서드는 요소의 렌더링 된 크기, 즉 페이지의 높이와 너비를 반환합니다.