如何更改包含连字符的HTML属性

时间:2016-05-30 16:11:27

标签: javascript python html selenium selenium-webdriver

我想使用aria-label

更改表格标题execute_script属性的值

HTML目标元素:

<th class="sorting" tabindex="0" rowspan="1" colspan="1" aria-label="Activate to sort column ascending">Company</th>

所以我试着跟随:

driver.execute_script('document.getElementsByTagName("th")[1].aria-label="Activate to sort column descending";')

但获得例外:

WebDriverException: Message: unknown error: Runtime.evaluate threw exception: ReferenceError: Invalid left-hand side in assignment

如果要使用

driver.execute_script('document.getElementsByTagName("th")[1].["aria-label"]="Activate to sort column descending";')

得到了

WebDriverException: Message: unknown error: Runtime.evaluate threw exception: SyntaxError: Unexpected token 

那么设置aria-label新值的正确陈述是什么?

2 个答案:

答案 0 :(得分:4)

由于aria-label是一个属性,您应该使用.setAttribute(...)

driver.execute_script("document.getElementsByTagName('th')[1].setAttribute('aria-label', 'Activate to sort column descending');")

答案 1 :(得分:3)

删除点。

driver.execute_script('document.getElementsByTagName("th")[1]["aria-label"]="Activate to sort column descending";')

在JavaScript中,a.foo等同于a["foo"],但只有在foo是有效标识符(即不包含连字符)时才允许使用前一种语法。