我正在尝试从https://www.federalreserve.gov/newsevents/speeches.htm抓取一些语音并自动执行,我需要单击“下一步”按钮从所有页面抓取。
不幸的是,无论我使用的NoSuchElementException
是哪种类型(find_element_by
,by_xpath
,...),我都会得到by_css_selector
。我也尝试过使用driver.execute_script()
,但是没有用。
这是我为XPath和CSS选择器尝试过的方法:
driver.find_element_by_css_selector("li.pagination-next:nth-child(11) > a:nth-child(1)")
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[4]/ul[1]/li[11]/a')
这是按钮的HTML代码:
<li ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next ng-scope">
<a href="" ng-click="selectPage(page + 1, $event)" ng-disabled="noNext()||ngDisabled" uib-tabindex-toggle="" class="ng-binding">Next</a>
</li>
答案 0 :(得分:0)
您可以使用以下代码单击元素:
我在xpath中使用了按钮的文本来查找它,并使用了显式等待,以便脚本等待直到该元素出现在页面上。
next_button = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//a[text()='Next']")))
next_button.click()
您需要添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC