Python 3 Selenium无法执行javascript

时间:2017-08-24 15:23:28

标签: javascript python selenium

我正在使用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不是函数

2 个答案:

答案 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');")