NoSuchElementException(SyntaxError:太多的静态嵌套块)

时间:2019-06-04 21:27:38

标签: python selenium-webdriver nosuchelementexception

我是新来的,我试图找出是否有更好的方法。 从相似的页面中抓取一些数据,但是元素在变化,我的解决方案是:

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 :(得分:0)

将所有xpath字符串保存在列表中,循环遍历该列表,直到找到匹配项为止。在之外,您可以传递尝试下一个值。

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