2012-10-11 3 views
1

셀레늄으로 웹 사이트를 테스트하기 전에 웹 사이트를 탐색하는 코드를 작성하고 있습니다. 3 개의 개별 드롭 다운 메뉴에서 값을 반복하고 제품 데이터가있는 최종 페이지를 검색하려고합니다.셀레늄 - 요소가 더 이상 DOM에 연결되지 않았습니다. - Python

지금까지 첫 번째 첫 번째 메뉴의 데이터와 두 번째 데이터의 관련 데이터를 인쇄 할 수 있었지만 첫 번째 메뉴에서 만든 목록의 첫 번째 요소 만 인쇄 할 수있었습니다.

DropdownA 값을 포함 그래서 예를 고려

B C D

'A'를 선택하면 DropdownB는 값으로 생성된다

내 목표는 전체 트리를 커버하고 값을 반환하는 것입니다 : - 1,2,3

B - 2,3,4

C

을 - 3,4,5

내 스크립트 폭탄 복귀 후 :

from pyvirtualdisplay import Display 
from selenium import webdriver 
import time 

display = Display(visible=0, size=(1024, 768)) 
display.start() 
driver = webdriver.Firefox() 
url = 'http://www.website.com' 

driver.get(url) 
driver.find_element_by_id('ctl00_ContentPlaceHolder1_pc_selector_selMake').click() 
make_list = driver.find_elements_by_css_selector('#ctl00_ContentPlaceHolder1_pc_selector_selMake option') 
for raw_make in make_list: 
    if 'Select' in raw_make.text: 
     continue 
    make = raw_make.text 
    print make 
    raw_make.click() 
    time.sleep(1) 

    model_list = driver.find_elements_by_css_selector('#ctl00_ContentPlaceHolder1_pc_selector_selModel option') 
    for raw_model in model_list: 
     if 'Select' in raw_model.text: 
      continue 
     model = raw_model.text 

     print ' ', model 

driver.close() 
display.stop() 

정확한 오류는 다음과 같습니다 : selenium.common.exceptions.StaleElementReferenceException: Message: u'Element is no longer attached to the DOM'

내가이 그래서 만약, 셀레늄에 아주 새로운 해요 - 53,691,363,210

여기 1,2,3

내 코드의 예입니다 바보 같은 질문입니다. 용서해주세요. 나는 마음에 떠오르는 것을 시도하거나, 온라인에서 읽은 것 외에는 아무 것도 도움이되지 않았다는 것을 인정하는 것보다 더 많은 시간을 보냈다. (부분적으로 내가 만난 예들 대부분이 자바로 쓰여졌 기 때문에, Java 남자가 아니라 ...).

모든 도움, 제안, 솔루션, 리소스 등을 높이 평가합니다.

미리 감사드립니다.

+0

이 오류가 발생하는 행을 알 수 있습니까? – Zarkonnen

+0

첫 번째 for 루프의 첫 번째 줄에서 오류가 발생합니다. 'raw_make.text에서 'Select': ' – That1Guy

+0

@ Zarkonnen 즉, 루프의 두 번째 루프. 코드는 처음부터 잘 실행됩니다. – That1Guy

답변

3

궁극적으로, 반복되는 DOM 요소처럼 보이지 않습니다. 어떻게 이런 일이 생길 수 있니? 나는 문제는 다음에 발생 믿습니다 : 각 태그를 통해

driver.find_elements_by_css_selector('#ctl00_ContentPlaceHolder1_pc_selector_selMake option') 

그런 다음있어 반복하는을 각각 클릭 : 당신은 호출하여 드롭 다운 내의 모든 태그를 잡는 것입니다. 내 최선의 추측은 클릭 할 때마다 드롭 다운이 다시 생성 될 수 있으므로 반복되는 객체를 무효화하는 것입니다. 따라서 성공적인 첫 번째 반복이지만 그 이후의 모든 반복은 성공적이지 못합니다.

희망이 도움이됩니다.

관련 문제