Python硒使用find_element_by单击按钮

时间:2020-04-03 16:45:51

标签: javascript python html css selenium

我正在尝试从https://www.federalreserve.gov/newsevents/speeches.htm抓取一些语音并自动执行,我需要单击“下一步”按钮从所有页面抓取。

不幸的是,无论我使用的NoSuchElementException是哪种类型(find_element_byby_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>

1 个答案:

答案 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