Python 有没有一种方法可以创建一个循环来搜索一个元素;如果找不到该元素,则;else/elif“;你会跑吗?

Python 有没有一种方法可以创建一个循环来搜索一个元素;如果找不到该元素,则;else/elif“;你会跑吗?,python,Python,我想在在线游戏中搜索一个元素,该元素只会在我移动角色后随机出现 elements = driver.find_element_by_css_selector('p > .button-maroon') while True: if elements.is_displayed(): print('found it!') time.sleep(5) except NoSuchElementException: time.slee

我想在在线游戏中搜索一个元素,该元素只会在我移动角色后随机出现

elements = driver.find_element_by_css_selector('p > .button-maroon')    

while True:
    if elements.is_displayed():
        print('found it!')
        time.sleep(5)
except NoSuchElementException:
        time.sleep(2)
        pg.press('s')
我得到一个错误,表示无法定位元素。显然,元素不在那里,因此,它应该移动到下一行,即按下S按钮并循环返回,直到找到元素。我如何解决这个问题?

应该可以

elements = driver.find_element_by_css_selector('p > .button-maroon')    

while True:
    try:
        if elements.is_displayed():
            print('found it!')
            time.sleep(5)
            break
    except NoSuchElementException:
            time.sleep(2)
            pg.press('s')
不要对你的机器人发疯,在你这么做之前,确保游戏对你感到满意。:-)

这应该行得通

elements = driver.find_element_by_css_selector('p > .button-maroon')    

while True:
    try:
        if elements.is_displayed():
            print('found it!')
            time.sleep(5)
            break
    except NoSuchElementException:
            time.sleep(2)
            pg.press('s')

不要对你的机器人发疯,在你这么做之前,确保游戏对你感到满意。:-)

您可以使用until方法和wait-for元素

代码如下所示:

while True:
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, 'p > .button-maroon'))
    )
        print('found it!')
        time.sleep(5)
    except Exception:
        time.sleep(2)
        pg.press('s')

您可以使用until方法和wait-for元素

代码如下所示:

while True:
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, 'p > .button-maroon'))
    )
        print('found it!')
        time.sleep(5)
    except Exception:
        time.sleep(2)
        pg.press('s')

我尝试过显式等待,但它不起作用,因为我正在寻找的元素只会在游戏中移动后随机填充,但你需要一段时间,所以它会一直搜索,是吗?是的,我在一段时间内是真的,但它似乎没有循环我尝试过显式等待,但它不起作用,因为我正在寻找的元素只会在游戏中移动后随机填充,但你在一段时间内,所以它会一直搜索,对吗?是的,我在一段时间内是真的,但它似乎没有循环,我得到一个错误,消息:没有这样的元素:无法找到元素。我不确定为什么代码不会继续到下一行。我收到一个错误,消息:没有这样的元素:无法找到元素。我不知道为什么代码不会继续到下一行