2016-05-30 28 views
3

我想用execute_script如何更改包含连字符

目标元素的HTML改变表头的aria-label属性的值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新的价值?

回答

3

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

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

删除点。

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

在JavaScript中,a.foo相当于a["foo"],但如果是foo有效标识符前者语法只允许(即不包含连字符)。