2014-04-23 2 views
1

저는 파이썬에서 셀렌과 링크를 반복하고 싶습니다. 나는 this explanation을 따르려고 노력했지만 성공하지 못했습니다. 나는 "오래된 요소 참조 오류 (나는 WebDriverWait를 사용하는 것을 시도하고있다) 다음과 내 코드입니다으로 점점 계속 :.Python에서 셀렌과 링크를 반복하려고 시도합니다.

list_of_links = mydriver.find_elements_by_xpath('//ul[@class="directory dir-col"]/li/a') 
for link in list_of_links: 
UI.WebDriverWait(mydriver, 30).until(lambda mydriver:mydriver.find_element_by_xpath('//ul[@class="directory dir-col"]/li/a'))   
link.click() 
mydriver.back() 

I했던 이전과 클릭 후 webdriver 대기 명령을 배치하려고 다시와 명령 .. 더 성공 어떤 도움이 높게 평가 될 것이다

답변

0

내가 XPATH 값을 루프하기로 결정하고 텍스트를 연결하지 (동일 할 수있는) 내가 함께 결국 코드는 다음과 같습니다

import lxml.html as lh 
import urllib2 
from selenium import webdriver 

htmlObject = lh.parse(urllib2.urlopen(start_url)) 
listOfPaths = htmlObject.xpath('//ul[@class="directory dir-col"]/li/a') 
listOfLinkPathes = [] 
for link in listOfPaths: 
    listOfLinkPathes.append(htmlObject.getpath(link)) 
for linkPath in listOfLinkPathes: 
    mydriver.find_element_by_xpath(linkPath).click() 
    mydriver.back() 
1

문제는 페이지를 떠나 일단 list_of_links의 요소가 오래된 될 것이 없다

이 방식은 각 링크를 가정하는 것은 다른 텍스트가 당신을 위해 작동합니다. :

list_of_links = mydriver.find_elements_by_xpath('//ul[@class="directory dir-col"]/li/a') 
list_of_linktext = [] 
for link in list_of_links: 
    list_of_linktext.append(link.text) 

for linktext in list_of_linktext: 
    mydriver.find_element_by_link_text(linktext).click() 
    mydriver.back() 
관련 문제