代码之家  ›  专栏  ›  技术社区  ›  paul

JavascriptExecutor:无法读取null的属性“removeAttribute”

  •  1
  • paul  · 技术社区  · 8 年前

    我正在使用Javascript executor删除 readonly 属性,但它给出了一个错误。 Cannot read property 'removeAttribute' of null

    我看到过不同的帖子,人们确认从Chrome上删除AdBlock后,它就工作了。我不知道什么是AdBlock,也不知道如何在运行时从Chrome二进制文件中删除它,所以我尝试了Firefox(Gecko驱动程序),但它也抛出了同样的错误。

    代码:

    driver.get("http://jsfiddle.net/343Rb/");
    runJS().executeScript("document.getElementById('myInput').removeAttribute('readonly')");
    

    我尝试的浏览器: Windows 7上的Chrome Binary最新版本、Firefox(GeckoDriver最新版本)

    我浏览的链接:

    1. TypeError: Cannot read property "removeAttribute" of null
    2. Cannot read property 'removeAttribute' of null: Cant find source of it
    3. Cannot read property *0* of null

    上面的帖子很少是纯粹基于JS的,所以我相信这就是他们没有回复我的原因。

    我正在使用Selenium 3.0、Windows 7、Firefox、Chrome、Java、Testng

    1 回复  |  直到 8 年前
        1
  •  0
  •   Danziger    8 年前

    问题是您想要的元素位于 <iframe> 。在查询元素之前,您需要切换到它:

    driver.switchTo().frame('result');
    

    或:

    driver.switchTo().frame(driver.findElement(By.name('result')));