2017-11-27 4 views
0

Selenium Web Driver로 버튼을 클릭하려고합니다.Selenium WebDriver에서 Python을 선택/클릭 할 수 없습니다.

(I 그것이 각도로 작성된 것입니다 생각 ??)

URL 그것은 "로드 더 많은 결과"

요소 페이지 소스입니다와 페이지의 하단에있는 녹색 버튼의 https://www.truelocal.com.au/search/accountants/canberra

입니다 .. .

<button class="btn btn-full btn-add js-review-open" ng-class="{true:'btn-loading', false:''}[vm.loadingMore]" ng-hide="vm.checkResultsOffset()" ng-click="vm.loadMoreResults()" aria-hidden="false" style=""> 

    <!-- ngIf: vm.loadingMore==true --> 
    <!-- ngIf: vm.loadingMore==false --> 
    <span ng-if="vm.loadingMore==false" class="ng-scope" style="">LOAD MORE RESULTS</span> 
    <!-- end ngIf: vm.loadingMore==false --> 
</button> 

내가 정말 할 수있는 유일한 방법은

elm = driver.find_elements_by_xpath("//*[contains(text(), 'LOAD MORE RESULTS')]") 

하지만 버튼을 클릭 할 수 없습니다.

도움이 필요하십니까?

+0

왜 테스트에 실패했는지 보여주는 관련 스택 추적이 있습니까? – Danny

답변

1

시도해보십시오. 클릭 할 수있는 버튼이 없을 때까지 더 많은 버튼을 계속 클릭합니다.

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Chrome() 
driver.get("https://www.truelocal.com.au/search/accountants/canberra") 
wait = WebDriverWait(driver, 10) 

while True: 
    try: 
     link = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button[ng-click='vm.loadMoreResults()'] .ng-scope"))) 
     link.click() 
     wait.until(EC.staleness_of(link)) 
    except: 
     break 
driver.quit() 
+0

고맙습니다. 내가 도와 주셔서 감사합니다. @Shahin –

0

텍스트가 LOAD MORE RESULTS 인 버튼을 클릭하려면 버튼이 Angular Element이므로 제대로 렌더링 될 때까지 기다려야합니다. 따라서 다음 코드 블록을 사용할 수 있습니다.

WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element(By.XPATH,"//button[@class='btn btn-full btn-add js-review-open']/span[@class='ng-scope']"),'LOAD MORE RESULTS') 
driver.find_elements_by_xpath("//button[@class='btn btn-full btn-add js-review-open']/span[@class='ng-scope']").click() 
관련 문제