Программное редактирование содержимого CodeMirror без доступа к объекту

Я использую Selenium для запуска автоматических тестов на странице, содержащей редактор CodeMirror. У меня нет доступа к объекту, однако у меня есть jQuery. Как я могу редактировать содержимое редактора таким образом, чтобы CodeMirror распознал изменение?

3 ответов


накрутка div элемент DOM (с классом CodeMirror) будет иметь собственность CodeMirror это относится к объекту экземпляра редактора. Вы можете позвонить setValue об этом.


разместив это здесь, так как выбранный ответ помог мне, но мне не хватало некоторой информации, чтобы полностью решить мою проблему (в основном из-за того, что я не знаю JavaScript или как взаимодействовать со свойствами WebElement). Вот как будет выглядеть код для Selenium / Java:

WebDriver driver = new FirefoxDriver();
WebElement queryInput = driver.findElement(By.cssSelector("div[class='CodeMirror']"));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].CodeMirror.setValue(\"" + query + "\");", queryInput);

@user3233451 - в моем случае мне пришлось ссылаться на правильный веб-элементов, например: By.cssSelector(".CodeMirror").

Additonally, у меня было два веб-элемента CodeMirror на странице, поэтому я сделал следующее:

    //declare codemirror variable
    private By codeMirrorWebElement = By.cssselector(".CodeMirror");

    //use Javascript executor to access each code mirror element via its respective index
    ((JavascriptExecutor) driver).executeScript("arguments[0].CodeMirror.setValue( '"+ query1 + "');", driver.findElements(codeMirrorWebElement).get(0));
    ((JavascriptExecutor) driver).executeScript("arguments[0].CodeMirror.setValue( '"+ query1 + "');", driver.findElements(codeMirrorWebElement).get(1));