[英]Can't select / click button using Selenium WebDriver w Python
我試圖用Selenium Web Driver單擊一個按鈕。
(我認為它是用Angular編寫的?)
網址為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')]")
但是我無法單擊按鈕。
有什么幫助嗎?
嘗試這個。 它將繼續單擊“加載更多”按鈕,直到沒有剩下要單擊的按鈕為止。
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()
要單擊帶有文本的“ 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.