python Selenium找不到时如何继续

vwkv1x7d  于 2023-02-11  发布在  Python
关注(0)|答案(2)|浏览(143)

我有这个代码:

import selenium.webdriver as webdriver
import time
import requests
from selenium.webdriver.chrome.options import Options
from usp.tree import sitemap_tree_for_homepage
import os
from selenium.webdriver.common.by import By
from urllib.parse import urlparse
from urllib.parse import parse_qs

options = Options()
options.add_argument('--allow-running-insecure-content')
options.add_argument('--ignore-certificate-errors')

driver = webdriver.Chrome()

sitemap = 'https://adesivimoto.eu/sitemap.xml'
next_pages = []

tree = sitemap_tree_for_homepage(sitemap)
for page in tree.all_pages():
    driver.get(page.url)
    print("visito "+page.url)
    time.sleep(2)
    
    if driver.find_element(By.CLASS_NAME, "next"):
        next_page = driver.find_element(By.CLASS_NAME, "next").get_attribute('href')
        next_pages.append(next_page)

for next_page in next_pages:
    print(next_page)
    
os.system("rundll32.exe powrprof.dll,SetSuspendState 0,1,0")

在代码显示next_page = driver.find_element(By.CLASS_NAME, "next")的地方,如果元素不可用,就会出现错误。我尝试使用if解决这个问题,但没有成功。我如何才能使is,以便如果元素不可用,代码就进入循环的下一次迭代?

sh7euo9m

sh7euo9m1#

try-except{}块结束代码行,该块为visibility_of_element_located()引发WebDriverWait并捕获 TimeoutException,如下所示:

try:
    next_page =  WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CLASS_NAME, "next"))).get_attribute('href')
    next_pages.append(next_page)
except TimeoutException:
    pass
zynd9foi

zynd9foi2#

try: # try getting the element
    next_page = driver.find_element(By.CLASS_NAME, "next")
    # code, if element gets found
    # ....
except:
    pass # not found ==> do nothing

如果这不是你需要的,请随时留下评论,我会编辑我的答案。

相关问题