NoSuchElementException (SyntaxError: слишком много статически вложенных блоков) - PullRequest
0 голосов
/ 05 июня 2019

Я новичок в этом, и я пытаюсь выяснить, есть ли лучший способ.Извлечение некоторых данных из похожих страниц, но элементы меняются, и мое решение:

try:
    p3 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'4 - 10:00')]").text
except NoSuchElementException:
    try:
        p3 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'3 - 00:00')]").text
    except NoSuchElementException:
        try:
            p3 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'4 - 09:59')]").text
        except NoSuchElementException:
            try: 
                  ...
                        p3 = 0

и так далее, но после некоторого повторения:

SyntaxError: too many statically nested blocks

Я нашел способ справиться с этим:

if p3 == 0:
           try:
               p3_2 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'4 - 09:45')]").text
           except NoSuchElementException:
...

Таким образом, мне удается выполнить работу, но мне интересно, есть ли лучший способ?

1 Ответ

0 голосов
/ 05 июня 2019

Сохраните все свои строки xpath в списке, перебирайте этот список, пока не найдете совпадение. В исключением, вы можете просто передать, чтобы попытаться следующее значение.

for xpath in xpaths:
    try:
        p =  driver.find_element_by_xpath(xpath).text
    except NoSuchElementException:         
        pass
...