我想使用 selenium 从网站下载数百万个 excel 文件。我当前的代码尝试处理 ElementNotVisibleException 的问题,但我的“尝试和例外”方法似乎不足。我试图实施一个尝试和例外解决方案,如果出现错误消息,我已指示 Selenium 等到“按钮”出现。import osimport timeimport csvfrom tqdm import tqdmimport pandas as pdfrom selenium import webdriverfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.common.exceptions import ElementNotVisibleExceptionfrom selenium.common.exceptions import ElementClickInterceptedExceptionworking_directory = r"xx"os.chdir(working_directory)options = webdriver.ChromeOptions() prefs = { "download.default_directory": r"xx", "download.prompt_for_download": False, "download.directory_upgrade": True}options.add_experimental_option("prefs", prefs)driver = webdriver.Chrome(r"C:xxx\chromedriver.exe", options = options) driver.get("website")# Logindriver.find_element_by_class_name("smallLoginBox").click()driver.implicitly_wait(1)time.sleep(2) driver.find_element_by_id('loginFormUC_loginEmailTextBox').send_keys('EMAIL')driver.find_element_by_id('loginFormUC_loginPasswordTextBox').send_keys('PASWORD')driver.find_element_by_xpath("//input[@value='Logg inn']").click()# Get a custom list of firmsbedrifter = []with open("./listwithIDs.csv") as csvDataFile: csvReader = csv.reader(csvDataFile) for row in csvReader: bedrifter.append(row[0])我希望代码能够下载所有文件(如果有),但会出现 ElementNotVisibleException 或 ElementClickInterceptedException。
3 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
您可能会遇到这些异常,因为它们发生在except
子句中,而不是在try
. 请查看回溯以确定哪一行引发了异常。这应该告诉你问题出在哪里。此外,如果您想等待元素可见,您应该使用visibility_of_element_located
而不是presence_of_element_located
紫衣仙女
TA贡献1839条经验 获得超15个赞
在对元素执行任何操作之前,首先检查它是否可见这是示例代码:
wait = WebDriverWait(self.browser, 15)
wait.until(EC.visibility_of_element_located(("element_path")))
driver.find_element_by_xpath("element_path").click()
添加回答
举报
0/150
提交
取消