【问题标题】:Using Selenium in Python to Check for New Content在 Python 中使用 Selenium 检查新内容
【发布时间】:2021-09-14 00:55:05
【问题描述】:

我正在尝试在 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)

【问题讨论】:

    标签: python selenium loops time while-loop


    【解决方案1】:

    由于您不知道新元素会是什么,因此最好检查是否存在旧元素。您可以使用以下补丁进行检查:

    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()
    

    试试看,如果有效,请告诉我!

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 2015-10-28
      相关资源
      最近更新 更多