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

标签 python selenium onchange event-listener

如何跟踪网站上动态更新的代码?

网站上有一部分代码显示通知。该代码经常更新,我想使用 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 的事件监听器来做到这一点? new_source=element.get_attribute('innerHTML')

最佳答案

尝试使用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处理

关于python - 如何在Python中使用selenium跟踪动态更新代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57943607/

相关文章:

python - 在 Mac 上安装适用于 IntelliJ IDEA/PyCharm 的 Python 3.5

python - 错误消息 - 元素不可交互的 Selenium webdriver

javascript - Textbox 类 Onchange 事件监听器不适用于多个类

html - 机器人框架: How to locate a input text field and how to input a value in it

android - 更改监听器的偏好

jQuery 函数在输入更改时更新 iFrame 内容

python - Pandas 将 JSON 字符串转换为 Dataframe - Python

python - 即使用户已经连接,也会显示登录表单

python - 创建模型对象时如何分配外键相关字段

java - 根据工作表页面单击单选按钮的值 - Java - Selenium Webdriver