关于Selenium的异常:如何继续脚本?

关于Selenium的异常:如何继续脚本?,selenium,exception,download,element,Selenium,Exception,Download,Element,我的代码一直有问题。当我终于能够打开网页,点击一个按钮,下载excel文件时,我遇到了一个错误:找不到这样的元素 我有一个URL列表,Selenium会仔细检查该列表,直到它遇到一个具有不同配置的URL,并且找不到“元素”。我只希望python跳过该url并转到下一个url。我可以在将来手动返回“断开的url” 这是我的代码: with open('C:/Users/ovtch/PyScript/source.csv', 'r') as csvfile: reader = csv.Dic

我的代码一直有问题。当我终于能够打开网页,点击一个按钮,下载excel文件时,我遇到了一个错误:找不到这样的元素

我有一个URL列表,Selenium会仔细检查该列表,直到它遇到一个具有不同配置的URL,并且找不到“元素”。我只希望python跳过该url并转到下一个url。我可以在将来手动返回“断开的url”

这是我的代码:

with open('C:/Users/ovtch/PyScript/source.csv', 'r') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        urlList.append(row['URL'])

driver = webdriver.Chrome(executable_path='chromedriver.exe')


def downloadCSV():
    count=1
    for url in urlList:

        driver.get(url)
        # Page Scraping Prepare
        time.sleep(1)
        driver.find_element_by_xpath('my path').click()
        time.sleep(1)
        driver.find_element_by_xpath('my path').click()
        count+=1

"""Show starting time"""
print("Start project time")
print(datetime.datetime.now().time())

downloadCSV()

"""Show end time"""
print("End project time")
print("Success")
time.sleep(8)
#driver.quit()

您可以使用try/catch和ignore error继续循环:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

#your code....

    for url in urlList:
        try:
            driver.get(url)
            # Page Scraping Prepare
            # Wait until your button is clickable and click
            WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "my path"))).click()
        except:
            continue

尝试这种方法,将find_元素\u by_*方法包装在异常块中,并相应地处理异常

from selenium.common.exceptions import NoSuchElementException

def downloadCSV():
    count=1
    for url in urlList:
    try:
        driver.get(url)
        # Page Scraping Prepare
        time.sleep(1)
        driver.find_element_by_xpath('my path').click()
        time.sleep(1)
        driver.find_element_by_xpath('my path').click()
        count+=1
     except NoSuchElementException:
         pass # or handle the error

似乎
count
变量是多余的,所以您可以删除它。为什么要单击同一个元素两次?我必须单击两次,否则它不会单击它!您是否也手动单击它两次?如果没有,你不应该点击它两次,但只需要更好的方法谢谢!这个很好用!现在我又遇到了另一个问题…网站不允许我连续下载超过5次…我有2900次要下载!!!这可能是一个网站的限制。如果下载脚本中出现错误,请将其粘贴到此处