2017-11-27 18 views
0

Selenium Web Driverでボタンをクリックしようとしています。Selenium WebDriverでPythonを選択/クリックできません

(私はそれが角に書かれていると思う??)

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> 

唯一のものは

0であります

ボタンをクリックすることができません。

お願いします。

+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() 
関連する問題