Я использую try
/except
для проверки на наличие xpath
альтернативных источников для ввода переменных с веб-сайта.Сокращение выражения для обработки исключений Python
Это нужно будет делать много раз, поэтому я ищу способ сократить выражение. Может быть, менеджер контекста может каким-то образом использоваться?
В этом примере я проверяю наличие двух альтернативных источников xpath для переменных issuer
и name
.
try:
xpath_issuer = ".//*[@id='dv_PRE88f496c28ad6488895f1ffc383fae8bd_list_list']/div/div[3]/table/tbody/tr[2]/td[2]"
find_issuer = driver.find_element_by_xpath(xpath_issuer)
issuer = re.search(r"(.+)", find_issuer.text).group()
except NoSuchElementException:
pass
try:
xpath_issuer = ".//*[@id='dv_PRE00e883469a264528b20fbbc31b0da4a2_list_list']/div/div[3]/table/tbody/tr[1]/td[2]/a"
find_issuer = driver.find_element_by_xpath(xpath_issuer)
issuer = re.search(r"(.+)", find_issuer.text).group()
except NoSuchElementException:
pass
try:
xpath_name = ".//*[@id='cols']/div[1]/div[1]/h1"
find_name = driver.find_element_by_xpath(xpath_name)
name = re.search(r"(.+)", find_name.text).group()
except NoSuchElementException:
pass
Определить функцию, которая принимает выражение XPath и содержит попытку/за исключением того кода, как показано на http://stackoverflow.com/a/12150013/423105. Не возвращать ли он None при возникновении исключения NoSuchElementException. Вызовите функцию три раза, используя три разных выражения XPath ... но остановитесь, если функция возвращает результат, отличный от None. – LarsH