在 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()
尝试一下,如果有效请告诉我!
我正在尝试在 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()
尝试一下,如果有效请告诉我!