【问题标题】:Why does my Try and except block not execute the try block in a 'while loop'?为什么我的 Try 和 except 块不执行 \'while 循环\' 中的 try 块?
【发布时间】:2022-11-02 22:48:28
【问题描述】:

我一直在使用 selenium 和 python 开发一个项目,我试图创建一个循环,在该循环中我的脚本试图通过单击一个元素来购买一个项目。如果未找到该元素,则刷新页面并重试。但是当它刷新,比如说50次,然后弹出一个结果时,它并没有购买元素,而是忽略它并保持刷新。我认为我的问题有一个相当简单的解决方案,但我似乎找不到它(可能是因为我是初学者)。 这是我写的代码:

while (True):
    try:
        time.sleep(0.3)
        kopen = driver.find_element(By.XPATH, 'The element')
        kopen.click()
        bevkoop = driver.find_element(By.XPATH, 'The element')
        bevkoop.click()
        break
    except NoSuchElementException:
        time.sleep(0.2)
        trg = driver.find_element(By.XPATH, 'The element')
        trg.click()
        bnpup = driver.find_element(By.XPATH, 'The element')
        bnpup.click()
        time.sleep(60 / 100)
        zoeken.click()

我已经拼命尝试实现'time.sleep(0.3)'以确保我的程序在立即进入except块之前实际上检查了元素是否存在,但是当然,这并没有做任何事情

【问题讨论】:

    标签: selenium-webdriver while-loop try-catch


    【解决方案1】:

    你的方法是错误的。
    假设找不到元素,这会导致抛出异常。
    except NoSuchElementException 捕获异常。好的。
    但是随后您再次尝试单击未找到的元素!
    你可以做什么:
    尝试单击try 块内的元素,如果失败,只需在except 块内放置一个睡眠,或者什么都不做,因为您已经在try 代码的开头有睡眠,然后重试,如下所示:

    while (True):
        try:
            time.sleep(0.3)
            driver.find_element(By.XPATH, 'The element').click()
            driver.find_element(By.XPATH, 'The element').click()
            break
        except NoSuchElementException:
            pass
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多