如何在python中使用selenium动态跟踪更新代码

2024-04-25 17:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

如何跟踪网站上的动态更新代码?你知道吗

在网站上有一部分代码显示通知。这段代码经常更新,我想使用selenium来捕获更改。你知道吗

示例:

# Setting up the driver
from selenium import webdriver
EXE_PATH = r'C:/Users/mrx/Downloads/chromedriver.exe'
driver = webdriver.Chrome(executable_path=EXE_PATH)

# Navigating to website and element of interest
driver.get('https://whateverwebsite.com/')
element = driver.find_element_by_id('changing-element')

# Printing source at time 1
element.get_attribute('innerHTML')

# Printing source at time 2
element.get_attribute('innerHTML')

时间1时间2返回的代码不同。我当然可以用一段时间的循环来捕捉这个。你知道吗

# While loop capturing changes
results=list()
while True:
    print("New source")
    source=element.get_attribute('innerHTML')
    new_source=element.get_attribute('innerHTML')
    results.append(source)
    while source==new_source:
        time.sleep(1)

使用selenium的事件监听器有没有更聪明的方法? 新的\u源=element.get\u属性('innerHTML')


Tags: path代码sourcegettime网站driverselenium
1条回答
网友
1楼 · 发布于 2024-04-25 17:10:04

尝试用WebDriverWait的selenium方式等待,selenium提供了一个方法.text_to_be_present_in_element,您可以尝试以下方法。你知道吗

首先,您需要以下导入:

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

试试下面的代码:

element = driver.find_element_by_id('changing-element')

# Printing source at time 1
element.get_attribute('innerHTML')

#something that makes the element change

WebDriverWait(driver, 10).until(expected_conditions.text_to_be_present_in_element((By.ID, 'changing-element'), 'expected_value'))

# Printing source at time 2
element.get_attribute('innerHTML')

但是如果没有找到它,它将返回一个TimeoutException错误,请用try/except处理

相关问题 更多 >