我正在尝试单击一个按钮以从this site自动导出csv文件。我尝试通过按钮名称和XPath查找元素,但引发了“NoSuchElement”异常。我尝试了WebdriverWait和time.sleep的变体来确保按钮加载,并使用xPathfinder扩展来获得正确的xPath。
代码如下:
#import Packages
import selenium
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
#set URL, Get it, and wait
driver = webdriver.Chrome()
driver.get('https://www.egle.state.mi.us/RIDE/inventory-of-facilities/facilities')
WebDriverWait(driver,11)
#Set and Click button
button = driver.find_element(by=By.XPATH, value='//*[@id="maincontent"]/div/inventory-of-facilities/som-page-section/div/div[2]/div[2]/facilities-table/som-page-section/div/div[2]/div[2]/som-table/div/div/div[1]/div[2]/div[2]/button')
button.click()
我尝试访问的按钮如下图所示:
在发布之前,我已经参考了以下问题:
- Clicking a button with Selenium button
- How to press/click the button using Selenium if the button does not have the Id?
- AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'
- 刚接触Selenium,不太熟悉HTML。任何见解都非常赞赏。
2条答案
按热度按时间vyu0f0g11#
我可以使用SeleniumBase单击该按钮。
pip install seleniumbase
,将以下脚本保存到文件中,然后使用python
或pytest
运行:self.highlight()
命令高亮显示按钮以显示找到了它。然后点击。8iwquhpp2#
你可以简单地使用
Selenium
。具体操作如下:
输出:
要遵循的步骤:
1.因为站点需要一些时间来加载所需的元素(这里是
Export
按钮)。单击此按钮下载表中的数据。因此,我们等待以确保表数据已经加载。1.现在数据已经加载完毕,只需单击
Export
按钮即可下载数据(此处为Facilities.csv
)。1.在给定路径下载文件需要一些时间,所以我们需要等待文件下载完成。要做到这一点,我们不断检查文件是否存在于给定的路径,一旦文件存在,我们就中断循环。
我希望它能解决你的问题。