现场区域是:
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忽略给出删除更新?
答案 0 :(得分:2)
我在IE中成功击败此错误的唯一方法是隐藏要删除的元素,添加新元素,然后删除隐藏元素。
答案 1 :(得分:-1)
要了解IE中的此错误,您必须查看aria-relevant
属性的文档,该文档指定您希望通知屏幕阅读器的更改。
请参阅Microsoft文档中的以下页面:aria-relevant attribute
在您的情况下,IE(错误地)认为您正在进行文本更新(因为使用被认为是字符串的innerHTML
),因此它会通知删除和添加:
只有在添加节点,或添加或删除文本时才会公布更新。
解决方案应该是使用addChild()
和removeChild()
函数添加或删除。