如果在python中使用selenium在页面上存在元素,如何进行while循环运行?

时间:2017-03-27 17:57:42

标签: python html selenium

我正在努力创建一个while循环,只要网站上存在特定元素,该循环就会运行。我现在所拥有的并不是我为之骄傲的解决方案,但它确实有效。但是,我非常感谢有关如何更改以下内容的一些建议:

def spider():
    url = 'https://stackoverflow.com/questions/ask'
    driver.get()

    while True:
        try:
            unique_element = driver.find_element_by_class_name("uniqueclass")

            do_something()

        except NoSuchElementException:
            print_data_to_file(entries)
            break

    do_something_else()

正如您所看到的,我在while循环中做的第一件事就是检查一个唯一的元素,该元素仅出现在包含我感兴趣的数据的页面上。因此,当我到达页面时没有这些信息,我会得到NoSuchElementException并打破。

如何在不必制作while True的情况下实现上述目标?

1 个答案:

答案 0 :(得分:4)

driver.find_elements不会抛出任何错误。如果返回的列表为空,则表示不再有任何元素

def spider():
    url = 'https://stackoverflow.com/questions/ask'
    driver.get()

    while len(driver.find_elements_by_class_name("uniqueclass")) > 0:
        do_something()

do_something_else()

您也可以使用显式等待预期条件staleness_of,但是您无法执行do_something()并且等待时间很短。