【发布时间】:2020-10-15 19:14:46
【问题描述】:
我使用JavascriptExecutor 输入文本。我的代码sn-p如下
private void inputWorkDescription(WebDriver driver, int rawNumber) throws IOException, GeneralSecurityException {
if (!getWorkDescriptionFromSheets(rawNumber).isEmpty()) {
WebDriverWait wait = new WebDriverWait(driver, WAITING_PERIOD);
WebElement workDescription = wait.until(ExpectedConditions.visibilityOfElementLocated(
By.cssSelector("span.placeholder-decoration.ProseMirror-widget span")));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", workDescription); // ---WORKS
executor.executeScript("arguments[0].value='123456';", workDescription); // --- DOESN'T WORK
executor.executeScript("arguments[0].setAttribute('value', '"
+ getWorkDescriptionFromSheets(rawNumber) + "');", workDescription); // --- DOESN'T WORK
}
}
很遗憾,它无法正常工作。我只看到 click 命令执行但没有文本输入。
我尝试了不同的文本输入选项,但它不起作用。
【问题讨论】:
-
嗨,有几个想法 - 你的 css 标识符是一个跨度。需要输入吗?它还能如何包含该值?...而且,您是否尝试过使用普通的 selenium sendkeys?当 sendkeys 不起作用时,Javascript 是一种正常的解决方法,因为它远离实际的用户操作。
-
是的,它的文本框和点击工作。我尝试使用标准的 sendKeys 但收到异常:元素不可交互,这就是我使用 JS 的原因。
-
能否提供html代码?
-
你是对的。我使用了错误的标识符。
标签: javascript java selenium