Selenium 如何单击网站中的下载按钮并在python中下载xlsx

Selenium 如何单击网站中的下载按钮并在python中下载xlsx,selenium,Selenium,我正在尝试从以下网站下载xlsx文件: 我想要点击 这是我的代码(从互联网上修改,但不起作用: from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome(executable_path='/Users/xxx/data') driver.get('https://upx.world/bigdata') btn = driver.find_el

我正在尝试从以下网站下载xlsx文件: 我想要点击

这是我的代码(从互联网上修改,但不起作用:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome(executable_path='/Users/xxx/data')
driver.get('https://upx.world/bigdata') 
btn = driver.find_element_by_xpath('/html/body/div[1]/div/div[1]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[1]/a[2]')
btn.click()
错误是:
WebDriverException:消息:“VirtualEnvironments”可执行文件可能具有错误的权限。请参阅https://sites.google.com/a/chromium.org/chromedriver/home 


有人能帮我一下吗?

你收到这个消息是因为你没有正确指定chromedriver的位置。你需要准确地将它指向chromedriver。另外,请尽量避免使用那种xpath,因为页面可能会发生更改,之后它将无法工作

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome(executable_path="D:/chromedriver.exe")

driver.get('https://upx.world/bigdata-transactions') 


def select_city(city_name):
    sleep(1)
    driver.find_elements_by_css_selector("div.v-select__selections")[0].click()
    sleep(1)
    driver.find_elements_by_xpath(f"//div[@class='v-list-item__title'][text()='{city_name}']")[0].click()
    sleep(1)


def select_neighborhood(neighborhood_name):
    sleep(1)
    driver.find_elements_by_css_selector("div.v-select__selections")[1].click()
    sleep(1)
    driver.find_element_by_id("input-49").send_keys(f"{neighborhood_name}" + Keys.ENTER)
    sleep(2)

select_city('Oakland & Piedmont')
select_neighborhood('Fairfax, Oakland')


btn = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//button[contains(@class,'ma-2')]/span/i[contains(@class,'download')]")))

btn.click()

问题解决了,非常感谢!只是一个小的后续问题:有没有办法自动关闭在下载过程中打开的网站不幸的是,在下载挂起时,如果不停止下载,就无法关闭浏览器,即使是在“正常”情况下chrome。你能做的就是等待2-5秒,然后关闭它?明白了!所以我最好在下载完成后手动关闭该网站。我可以问最后一个问题吗?仍然在该网站(),如何下载特定城市和社区中的数据?您可以使用2种方法并传递城市和社区名称。我将编辑上述代码。非常感谢!但当我运行您的代码时,我发现一个索引错误:```选择城市(城市名称)9驱动程序中的索引器。通过css选择程序(“div.v-select\u selections”)查找元素[0]。单击()10时间。睡眠(1)-->11驱动程序。通过xpath(f)/div[@class='v-list-item_uuutitle'][text()='{city\u name}']]查找元素[0]。单击()12时间。睡眠(1)13索引器:列表索引超出范围```