Python中如何设置DOM元素的role属性?
var but=document.createElement('button') but.className='Select-option' but.id='show-image-only' but.innerText='ABC' but.tabindex='-1' but.setAttribute('role','option') this.append(but)
但是最后 button 元素却没有 role 这个属性,可能是因为他这个时候还没有父母
Python中如何设置DOM元素的role属性?
3 回复
# 在Python中设置DOM元素的role属性通常涉及HTML/XML解析或Web自动化
# 以下是几种常见场景的解决方案:
# 1. 使用BeautifulSoup解析和修改HTML
from bs4 import BeautifulSoup
html = '<div id="mydiv">内容</div>'
soup = BeautifulSoup(html, 'html.parser')
element = soup.find('div', id='mydiv')
element['role'] = 'button' # 直接设置role属性
print(str(soup))
# 输出: <div id="mydiv" role="button">内容</div>
# 2. 使用lxml处理XML/HTML
from lxml import etree
html = '<div id="mydiv">内容</div>'
tree = etree.fromstring(html)
element = tree.xpath('//div[@id="mydiv"]')[0]
element.set('role', 'navigation')
print(etree.tostring(tree).decode())
# 输出: <div id="mydiv" role="navigation">内容</div>
# 3. Selenium Web自动化(操作浏览器中的真实DOM)
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('your_url_here')
element = driver.find_element(By.ID, 'mydiv')
driver.execute_script("arguments[0].setAttribute('role', 'alert')", element)
# 4. 使用xml.etree.ElementTree(标准库方案)
import xml.etree.ElementTree as ET
xml_string = '<div id="mydiv">内容</div>'
root = ET.fromstring(xml_string)
element = root.find(".//*[@id='mydiv']")
element.set('role', 'dialog')
print(ET.tostring(root).decode())
# 输出: <div id="mydiv" role="dialog">内容</div>
# 关键点:选择哪种方式取决于你的具体场景:
# - 解析静态HTML:用BeautifulSoup或lxml
# - 操作浏览器中的动态DOM:用Selenium
# - 处理标准XML:用xml.etree
# 一句话建议:根据你的使用场景选择合适的HTML/XML处理库。
如果是你说的原因,那就最后两句顺序换一下咯
#1 最后直接 cloneNode 了.一阵折腾,终于做出了个成品:https://greasyfork.org/zh-CN/scripts/371548-%E7%9F%A5%E4%B9%8E%E7%9C%8B%E5%9B%BE%E8%84%9A%E6%9C%AC

