如何使用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”)查找元素:
。另外,取决于内部发生的情况,做点什么()
稍微睡一觉可能会很好。我很感谢你的回答,我会试试的!