Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python中的selenium使while循环在页面上存在元素的情况下运行?_Python_Html_Selenium_Selenium Webdriver - Fatal编程技术网

如何使用python中的selenium使while循环在页面上存在元素的情况下运行?

如何使用python中的selenium使while循环在页面上存在元素的情况下运行?,python,html,selenium,selenium-webdriver,Python,Html,Selenium,Selenium Webdriver,我正在努力创建一个while-循环,只要特定元素出现在网站上,循环就会运行。我目前拥有的解决方案绝不是我引以为豪的,但它确实有效。不过,我非常感谢就如何更改以下内容提出一些建议: def spider(): url = 'https://stackoverflow.com/questions/ask' driver.get() while True: try: unique_element = driver.find_elemen

我正在努力创建一个
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
-循环中做的第一件事是检查唯一的元素,该元素只出现在包含我感兴趣的数据的页面上。因此,当我到达一个没有这些信息的页面时,我将得到
NoTouchElementException
并中断


如何实现上述功能而不必在True时生成

驱动程序。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()

您也可以在预期条件下使用显式等待,但是您将无法执行
do_something()
,并且它用于较短的等待时间

也可以是驱动程序时的
。通过类名称(“uniqueclass”)查找元素:
。另外,取决于内部发生的情况,做点什么()
稍微睡一觉可能会很好。我很感谢你的回答,我会试试的!