JAWS仅在IE中读取“aria-live”区域内的DOM节点的删除

时间:2015-11-25 08:22:53

标签: internet-explorer accessibility internet-explorer-11 wai-aria jaws-screen-reader

现场区域是:

public class LinkedIn {
    WebDriver driver = new FirefoxDriver();
    @BeforeTest
    public void setUp() throws Exception { 

        String baseUrl = "http://www.linkedin.com/";    
        driver.get(baseUrl);

    }


    @Test
    public void login() throws InterruptedException
    {
        WebElement login = driver.findElement(By.id("login-email"));
        login.sendKeys("*****@gmail.com");

        WebElement pwd = driver.findElement(By.id("login-password"));
        pwd.sendKeys("*****");


        WebElement in = driver.findElement(By.name("submit"));
        in.click();

        Thread.sleep(10000);
    }


     @Test
        public void profile()  {
    // here it gives error to me : Unable to locate element
        Actions action = new Actions(driver);
        WebElement profile = driver.findElement(By.xpath("//*[@id='img-defer-id-1-25469']"));
        action.moveToElement(profile).build().perform();
          driver.quit();
    }


}

在JavaScript中,我做的第一个更改是

<div aria-live='assertive' id='abc'> </div>

接下来,我做了另一个改变:

document.getElementById("abc").innerHTML="<span>Processing</span>";

JAWS在Firefox中没有问题,同时读取“处理”和“完成”。但IE读取“处理删除处理完成”

我了解到我正在使用新document.getElementById("abc").innerHTML="<span>Done</span>"; 替换<span>。但是,如何让JAWS忽略给出删除更新?

2 个答案:

答案 0 :(得分:2)

我在IE中成功击败此错误的唯一方法是隐藏要删除的元素,添加新元素,然后删除隐藏元素。

答案 1 :(得分:-1)

要了解IE中的此错误,您必须查看aria-relevant属性的文档,该文档指定您希望通知屏幕阅读器的更改。

请参阅Microsoft文档中的以下页面:aria-relevant attribute

在您的情况下,IE(错误地)认为您正在进行文本更新(因为使用被认为是字符串的innerHTML),因此它会通知删除和添加:

  

只有在添加节点,或添加或删除文本时才会公布更新。

解决方案应该是使用addChild()removeChild()函数添加或删除。