【问题标题】:how to change HTML attribute that contain hyphen如何更改包含连字符的 HTML 属性
【发布时间】:2016-09-28 12:51:32
【问题描述】:

我想使用 execute_script 更改表头的 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新值的正确语句是什么?

【问题讨论】:

    标签: javascript python html selenium selenium-webdriver


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      删除点。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-08
        • 2018-06-06
        • 2011-07-05
        • 2010-11-26
        相关资源
        最近更新 更多