2017-04-19 2 views
0

웹 사이트에서 정보를 긁어 내려고했지만 셀렌을 사용하여 정보를 탐색하는 데 문제가 있습니다. 사이트는 ng-click을 사용하여 테이블을 업데이트하므로 원하는 정보를 얻으려면 페이지의 다른 탭을 활성화해야합니다. 나는 그것이 기본적으로로드 이후 "카테고리 1"의 정보를 긁어하는 방법을 알아 낸셀렌으로 웹 사이트 탐색하기

<ul class="tabs swiper-wrapper" ng-class="{'swiper-wrapper' : swiperActive }"> 
    <li ng-repeat="category in Report.Winners track by $index" ng-click="updateCategory(category.key)" ng-class="{'active' : category.key == activeCategory, 'swiper-slide' : swiperActive }" class="ng-scope active"> 
     <p class="category text-small ng-binding">Category 1</p> 
     <p class="winner"> 
     </p> 
    </li><li ng-repeat="category in Report.Winners track by $index" ng-click="updateCategory(category.key)" ng-class="{'active' : category.key == activeCategory, 'swiper-slide' : swiperActive }" class="ng-scope"> 
     <p class="category text-small ng-binding">Category 2</p> 
     <p class="winner"> 
     </p> 
    </li><li ng-repeat="category in Report.Winners track by $index" ng-click="updateCategory(category.key)" ng-class="{'active' : category.key == activeCategory, 'swiper-slide' : swiperActive }" class="ng-scope"> 
     <p class="category text-small ng-binding">Category 3</p> 
     <p class="winner"> 
     </p> 
    </li> 
</ul> 

:이 탭을 생성하는 HTML이다. "범주 2"및 "범주 3"으로 이동하면 해당 항목도 다 긁을 수 있습니까? 감사! 이런 식으로 이렇게

for x in range(len(available_categories_links)): 
    available_categories_links[x].click() 

:

업데이트 :
각 범주에 대한 링크를 찾으려면이를 사용하여 종료 I :이 같은 그들을 통해

available_categories_links = browser.find_elements_by_css_selector("ul > [ng-click*=updateCategory]") 

을 그리고 나서 루프 원래 내가 원했던 것처럼 다른 탭을 이름별로 액세스 할 수 없으며 아마도 가장 효율적이거나 매우 강력하지는 않지만 특정 경우에는 완료됩니다.

+0

링크 텍스트로 요소를 찾으려고 했습니까? 'driver.find_element_by_link_text ("Category 2")' –

+0

예, 저는 그것을 시도했습니다. 내가 할 때 "NoSuchElementException"얻을. 검색하려는 텍스트가 내가 원하는 요소의 하위 요소이기 때문에 이것이 생각하십니까? – dataryne

답변

0

런타임에 탭을로드한다고 가정합니다. 따라서 탭을 활성화하려면 FindElement (By)를 사용하여 탭을 찾은 다음 해당 탭의 정보에 액세스하기 전에 해당 탭을 클릭해야합니다.

코드에 따르면 FindElement (By.Id)를 사용하는 ID가 없습니다. 그래서 FindElement (By.CSSSelector) 또는 FindElement (By.Xpath)를 사용하여 브라우저의 개발 도구에서 Locator 문자열을 복사 할 수있는 방법을 제안합니다. 즉, Google 크롬에서 마우스 오른쪽 버튼 클릭 ==> 검사 ==> 복사 선택기 또는 복사 Xpath.

는 탭 요소를 가지고 한 후,이 도움이 즉

IWebElement tab = driver.FindElement(By.CSSSelector); 

tab.Click();//Tab activated 
//...Do your thing afterwards. 

희망.

+0

OP는 Python 바인딩과 함께 Selenium을 사용하고 있다고 생각합니다. –

관련 문제