在 Python 中使用 Selenium 检查新内容

Using Selenium in Python to Check for New Content

我正在尝试在 Python 中使用 Selenium 检查页面上的文本是否已更新。如果页面已更新,它应该执行一些命令,如果没有,它应该继续 运行 通过循环检查每 30 秒一次更新。下面是我到目前为止的代码(新手所以对我放轻松)。这个想法是让代码不断循环遍历页面以查找添加的新文本。不确定 selenium 是否可以自动刷新页面或应该添加代码以关闭页面并从头开始。

到目前为止代码可以运行,但无法找出循环部分。

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("https://www.somewebsite.com/")

username = driver.find_element_by_id("user_login")
username.clear()
username.send_keys("some username")

password = driver.find_element_by_name("pwd")
password.clear()
password.send_keys("some password")

driver.find_element_by_name("wp-submit").click()
original = driver.find_element_by_css_selector('#feed > div.f-wrap > div:nth-child(1) > div.f-txt')
newer = original
while original == newer:
    body = driver.find_element_by_css_selector('#feed > div.f-wrap > div:nth-child(1) > div.f-txt')
    newer = body.text
    time.sleep(20)


while newer != original:
    print(newer)

因为您不知道新元素是什么,所以最好检查旧元素是否存在。您可以使用下面的补丁来检查相同的内容:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# create driver object 
driver = webdriver.Firefox()
  
# A URL loads
driver.get("https://www.somewebsite.com/")

# wait 20 seconds before for the element to be invisible
element = WebDriverWait(driver, 20).until(EC.invisibility_of_element_located((By.ID, "myDynamicElement"))
driver.refresh()

尝试一下,如果有效请告诉我!