2

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

4

2 回答 2

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 大喊帮助我解决这个问题: 如何使用 selenium 将 jQuery 添加到页面

于 2019-09-15T04:50:08.027 回答
2

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

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

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"))
于 2019-09-15T06:18:03.727 回答