执行“尝试...除外...”的功能

时间:2020-03-09 09:32:02

标签: python python-3.x selenium

我想在函数中添加一个“ try ... except ...”,以便我的代码更短,因为它被多次使用。

完成这项工作:

def whiletry(x):
    while 1:
        try:
            x
            break
        except:
            time.sleep(0.25)

whiletry(driver.find_element_by_xpath('//*[@id="j_list_card"]/ul/li/h3/a').click())

3 个答案:

答案 0 :(得分:6)

def whiletry(func):
    while 1:
        try:
            return func()
        except:
            time.sleep(0.25)

def click():
    driver.find_element_by_xpath('//*[@id="j_list_card"]/ul/li/h3/a').click()

whiletry(click)

用法也可以等效地写为:

whiletry(lambda: driver.find_element_by_xpath('//*[@id="j_list_card"]/ul/li/h3/a').click())

请注意lambda

答案 1 :(得分:3)

如果您正在使用Selenium进行测试,并且想要等待网页上出现某些内容,请waits may help you.

以我的经验,Selenium中的自定义try-excepts和无限循环可能会导致维护问题。标准硒等待看起来像这样:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as expected

wait = WebDriverWait(driver, 10)
element = wait.until(expected.presence_of_element_located((By.XPATH, '//*[@id="j_list_card"]/ul/li/h3/a')))
element.click()

答案 2 :(得分:0)

我想这应该适合您的用例:

def do_this():
    driver.find_element_by_xpath('//*[@id="j_list_card"]/ul/li/h3/a').click()

try:
    do_this()
except:
    time.sleep(0.25)