sendKeys到contentEditable div不能在Internet Explorer中工作

时间:2016-06-03 10:20:30

标签: java html selenium selenium-webdriver internet-explorer-11

我在Selenium WebDriver中遇到了InternetExplorerDriver的问题。下图显示了Sharepoint站点的一部分,其中Audience Area和Location为字段,可以接受手动键入的输入,也可以在单击字段最右侧的按钮时从弹出列表中进行选择。在下面的示例中,我手动在“受众区域”中输入了无效条目,并在“位置”中输入了有效条目。

contentEditable divs in IE

但是,在Selenium中运行脚本时,sendKeys命令不适用于这些元素。根据xpath,这些元素被标识为具有以下属性的div:

<div id="AudienceArea_$containereditableRegion"
 class="ms-rtestate-write ms-taxonomy-writeableregion ms-inputBox ms-inputBoxActive"
 contenteditable="true"
 role="textbox"
 aria-autocomplete="both"
 aria-haspopup="true"
 aria-multiline="true"
 disableribboncommands="True"
 allowmultilines="false"
 restrictpastetotext="True"
 rtedirty="false">

最近尝试将文本发送到元素的代码如下:

    Webelement element = driver.findElement(By.xpath("//html/body/form/div[4]/div/div[1]/div/div[2]/div[2]/div[2]/table/tbody/tr/td/div/div/div/div/table/tbody/tr/td[1]/span/table[1]/tbody/tr[5]/td[2]/div/div[1]/div/div"));
    Actions actions = new Actions(driver);
    actions.moveToElement(element);
    actions.click();
    actions.sendKeys("SomeText");
    actions.build().perform();

当我在Firefox中运行它时,它识别元素并发送所需的文本。当我在Internet Explorer中尝试此操作时,它成功识别元素并执行sendKeys,但文本字段中没有任何内容。没有例外。

以前有人遇到过这样的事吗?有没有办法解决这个问题,例如sendKeys的替代方案?

我正在使用IE v11运行InternetExplorerDriver v2.53.1.0

1 个答案:

答案 0 :(得分:1)

点击后你应该尝试setValue,

    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("arguments[0].textContent= arguments[1];", element,"SomeText");