gpt4 book ai didi

python - 尝试除了在 python/selenium 中仍然抛出 NoSuchElementException 错误

转载 作者:行者123 更新时间:2023-11-28 18:16:17 27 4
gpt4 key购买 nike

我正在尝试在 python 中使用 selenium 捕获一些网站元素,并且我正在使用 try/except 以防在该特定页面中找不到特定元素。这一切都很好,但是脚本仍然抛出 NoSuchElementException,即使我期待它并告诉脚本以某种方式处理它或通过。

我唯一认为可能有问题的是这个 try/except 嵌套在另一个 try/except 中,所以我是这样的

for month in (month_start, month_end):

for date in (date_start, date_end):

try: #this is just a general try in case there is a breakdown in finding one of the elements
driver.get(url)
results = driver.find_elements_by_xpath("""//*[@class="results"]/div""")

for result in results:
sample_element = result.find_element_by_xpath("blah").text

#seems to be where the problem starts
specific_element = ""
try:
#this is a specific element that I know may not exist
specific_element = result.find_element_by_xpath(""".//*[@class="specific"]/div""").text
except NoSuchElementException:
specific_element = ""
#I have tried pass instead as well with no luck
#throws an error here and won't continue if the specific element is not found
except:
#pretty much a copy of the above try with some changes

所以我通常认为我对 python 中的 try/except 函数有一个不错的理解,但这是我的头脑。“结果中的结果”循环将愉快地继续,直到它找不到 specific_element 并抛出一个“selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:”

如果嵌套在 try/except 中是整个问题的原因,您能否解释为什么会这样,并推荐一个我可以研究或实现的可能解决方案?或者,也许我错过了一些基本的东西。

最佳答案

我不使用 python,但如果是我,我会删除所有 try/catches 并将它们替换为 find_elements_* 并检查空列表。例如

替换

specific_element = result.find_element_by_xpath(""".//*[@class="specific"]/div""").text

elements = result.find_elements_by_xpath(".//*[@class='specific']/div")
if elements
specific_element = elements[0]

这基本上只是确保在访问任何元素之前找到它并且您可以避免所有的 try/catches。我认为异常(exception)应该是异常(exception)的……罕见的。它们不应被期望或用作流量控制等。

关于python - 尝试除了在 python/selenium 中仍然抛出 NoSuchElementException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179010/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com