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