我有这个代码:
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,以便如果元素不可用,代码就进入循环的下一次迭代?
2条答案
按热度按时间sh7euo9m1#
用
try-except{}
块结束代码行,该块为visibility_of_element_located()引发WebDriverWait并捕获 TimeoutException,如下所示:zynd9foi2#
如果这不是你需要的,请随时留下评论,我会编辑我的答案。