Programmiert den CodeMirror-Inhalt ohne Zugriff auf das Objekt

8

Ich verwende Selenium, um automatisierte Tests auf einer Seite auszuführen, die einen CodeMirror-Editor enthält. Ich habe keinen Zugriff auf das Objekt, aber ich habe jQuery verfügbar. Wie kann ich den Inhalt des Editors so bearbeiten, dass CodeMirror die Änderung erkennt?

    
ajnatural 18.02.2014, 04:44
quelle

3 Antworten

11

Das Wrapping-Element div DOM (mit der Klasse CodeMirror ) hat eine Eigenschaft CodeMirror , die auf das Editor-Instanzobjekt verweist. Sie können setValue dafür aufrufen.

    
Marijn 18.02.2014, 10:39
quelle
7

Dies hier zu veröffentlichen, da die gewählte Antwort mir geholfen hat, aber mir fehlten einige Informationen, um mein Problem vollständig zu lösen (hauptsächlich, weil ich JavaScript nicht kannte oder mit WebElement-Eigenschaften interagierte). So würde der Code für Selenium / Java aussehen:

%Vor%     
user3446958 17.12.2015 16:32
quelle
0

@ user3233451 - in meinem Fall musste ich das korrekte Webelement referenzieren: By.cssSelector (".CodeMirror") .

Wenn die Seite möglicherweise mehrere CodeMirror-Objekte enthält, können Sie außerdem Folgendes tun:

  1. Definieren Sie die Variable für das CodeMirror-Element: private By codeMirrorWebElement = By.cssSelector (".CodeMirror");
  2. Führen Sie den Code zur Dateneingabe auf folgende Weise aus:
  3. ((JavascriptExecutor) -Treiber) .executeScript ("Argumente [0] .CodeMirror.setValue ('" + query1 +' '); ", driver.findElements (codeMirrorWebElement) .get (0));
  4. ((JavascriptExecutor) -Treiber) .executeScript ("Argumente [0] .CodeMirror.setValue ('" + query2 + "');", driver.findElements (codeMirrorWebElement) .get (1));
a_myze 29.03.2018 18:40
quelle