使用 Selenium 修改 HTML

Posted

技术标签:

【中文标题】使用 Selenium 修改 HTML【英文标题】:Modify HTML with Selenium 【发布时间】:2020-01-16 07:56:42 【问题描述】:

我想使用 Selenium(与 Python 3 一起运行)修改浏览器中的特定 html 元素,使其周围有“标记”标签(从而突出显示我感兴趣的文本)。有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

您可能想要突出显示输入框,并且您可能希望它只突出显示一小段时间......

这是我用来突出显示元素的函数:

def highlight_element(element):
    driver_elem = element.parent

    def apply_style(s):
        driver_elem.execute_script("arguments[0].setAttribute('style', arguments[1]);",
                                   element, s)

    original_style = element.get_attribute('style')
    apply_style("background: yellow; border: 2px solid red;")
    sleep(0.5)
    apply_style(original_style)

您必须向函数传递一个元素,例如:

highlight_element(driver.find_element_by_id("username"))

【讨论】:

【参考方案2】:

如果页面使用 jQuery,这很容易实现:

driver.execute_script('$("#some_id").wrap("<mark></mark>")')

如果页面没有使用 jquery,您可以使用以下脚本手动添加:

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get(url)

driver.execute_script("""var jquery_script = document.createElement('script');
jquery_script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(jquery_script);""")

time.sleep(0.5) # you need to let jquery load first
driver.execute_script('$ = window.jQuery;')

driver.execute_script('$("#some_id").wrap("<mark></mark>")')

感谢 Furas 在这方面帮助我: how to add jQuery to a page using selenium.

【讨论】:

以上是关于使用 Selenium 修改 HTML的主要内容,如果未能解决你的问题,请参考以下文章

使用 Selenium 修改 innerHTML

修改 selenium webdriver 的参数

如何修改selenium IDE以使用Id作为元素定位器

Python selenium - 修改网页的源代码

Selenium webdriver:修改 navigator.webdriver 标志以防止硒检测

python selenium不关闭当前浏览器修改配置