我想在函数中添加一个“ 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())
答案 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)