我正在使用python 3而我正在使用Selenium尝试从网站上删除数据。我需要从列表项中删除一个类才能显示我需要的数据,这是代码:
driver.execute_script("document.getElementsByClassName('otherClassName isSelected').classList.remove('isSelected');")
但我收到了错误
" selenium.common.exceptions.WebDriverException:消息:未知错误: 无法阅读财产'删除'未定义"
我也试过
driver.execute_script("document.getElementsByClassName('otherClassName isSelected').setAttribute('class', 'otherClassName')")
然后我得到了
selenium.common.exceptions.WebDriverException:消息:未知错误:document.getElementsByClassName(...)。setAttribute不是函数
答案 0 :(得分:0)
我想这是因为您尝试同时为多个元素应用类名更新,而setAttribute()
允许在此时将更改应用于一个元素。
尝试以下代码
js = """document.querySelectorAll('.otherClassName.isSelected')
.forEach( x=> x.setAttribute("class","otherClassName"));"""
driver.execute_script(js)
P.S。它似乎是XY problem,因为通常您不需要在页面抓取时对页面源进行更改。您应该分享有关初始问题的更多详细信息
答案 1 :(得分:0)
我忘了在按类获取元素后添加[0],所以正确的代码应为:
driver.execute_script("document.getElementsByClassName('otherClassName isSelected')[0].classList.remove('isSelected');")