2013-01-07 10 views
1

xpath와 일치하는 요소 목록을 만들고 각각을 연속적으로 클릭하고자합니다. 그러나 get_attribute("href") 명령을 사용하면 '유니 코드'개체에 '클릭'특성이 없습니다. 오류가 발생했습니다. 이것은 href가 문자열이기 때문입니다. get_attribute를 사용하지 않고 단순히 다음 명령을 사용하면 :Python을 사용하여 selenium webdriver를 사용하는 xpath를 클릭해야합니다.

driver.find_elements_by_xpath(".//div/div/div[3]/table//tr[12]/td/table//tr/td/a") 

목록이 가득 찼습니다. 목록의 첫 번째 링크를 성공적으로 클릭 할 수 있습니다. 그러나 두 번째를 클릭하면이 오류가 발생합니다. '요소가 캐시에 없습니다. 이 캐시에서 발견되었습니다.' 페이지를 링크하는 이유를 상상해보십시오.

javascript:__doPostBack('ctl00$Content$listJobsByAll1$GridView2','Page$3')) 

관련 정보를 한 번 더 조각 :을 통해 자바로 검색 쿼리를 통해 생성된다 (이것은 HREF 링크 중 하나 인이 XPath는 위치에 두 개의 속성이 있습니다. HREF 및 텍스트가

그래서 자바 웹 사이트와 두 속성 만 다루고 있다고 가정하면 누군가가 어떤 webdriver 명령을 내게 말할 수 있기를 바라고 있습니다. 일련의 클릭 가능한 정적 링크를 얻는 데 사용할 수 있습니다. 특정 답변 이외에, 내가 어떻게 알아낼 수 있었는지에 대한 조언은 도움이 될 것입니다.

답변

2

selenium 링크를 클릭하면 현재 페이지가 변경됩니다. 귀하가 지시 한 페이지에는 다음 요소가 없습니다.

얻을 수있는 링크를 사용

'.//tag/@href' 

당신은 시도 할 수 있습니다 :

for elem in elems: 
    elem.click() 
    print browser.current_url 
    browser.back() 
+0

감사합니다. 나는 왜 내가 그걸 시도하지 않았는지 모르겠다. 왜 효과가 없을 지 모른다. 나는 집에 갈 때 달리기를 할 것이다. – user1780952

+0

그래서 내가 돌아 왔을 때 그 요소는 여전히 다르기 때문에 1) 요소 수를 계산 한 다음 2) 요소 목록의 범위를 반복하고 i 번째 요소를 클릭 할 때마다 목록을 인스턴스화해야했습니다. – user1780952

+0

for driver.find_elements_by_xpath (".// div/div/div [3]/table // tr [12]/td/table // tr/td/a") : \t list.append 카운트 = LEN (목록) -1 범위 (카운트)에서의 I 인쇄 카운트 : \t 인쇄 제가 \t 대상 = driver.find_elements_by_xpath (".// DIV/DIV/DIV [3]/표// TR [12]/TD/테이블 // TR/TD/A ") \t 인쇄 대상 \t 타겟 [I] .click() \t time.sleep (5) \t driver.back() \t 시간 .에스 leep (5) – user1780952

관련 문제