2016-07-18 3 views
0

Ich mache einige Integrationstests, und ich habe einige Tabellen durch ein Gitter ersetzt. In diesem Moment habe ich einige sichtbare Spalten standardmäßig und anderen Spalten ausgeblendet sind wie folgt:Wie kann ich eine versteckte Spalte eines Gitters mit der Vaadin Testbench anzeigen?

column6.setHidable(true); 
column6.setHidden(true); 

nun einige Integration zu tun Tests, die ich versuche. Für das Netz bekommen, kann ich die Methode verwenden (ist das einzige Gitter in dieser Ansicht):

$(GridElement.class).first(); 

Dies funktioniert gut. Aber für meinen Test (mit Vaadin Testbench) muss ich einige Werte überprüfen, die sich innerhalb der versteckten Spalten des Gitters befinden. Ich spreche über diese Schaltfläche:

enter image description here

ich versucht hat, die Vaadin Debug-Konsole zu verwenden, um den Namen der Schaltfläche zu erhalten, die der Benutzer Spalt zeigen/verstecken kann, aber die Debug-Konsole kann nur wählen die gesamtes Rasterelement, nicht dieses Menü.

Ich habe auch überprüft, ob innerhalb des GridElement existiert irgendeine Art von bereits implementierten Methode, die mir Zugriff auf dieses Menü ohne Erfolg geben.

Antwort

1

Normalerweise chrome developer tools (oder ähnlich für firefox und ie/edge, etc) ist dein bester Freund in solchen Fällen. Bis jetzt ist mir nichts bekannt, was speziell für diesen Knopf gedacht ist. Allerdings können Sie diese Einschränkung umgehen, indem Sie die Elemente ausgewählt werden, die diese Funktion durch ihre spezifische Klassen zusammensetzen:

chrome developer tools

Die folgende Testmethode zeigt eine schnelle Implementierung, die Ihnen einen Ausgangspunkt geben sollte:

public class GridManipulationTest extends TestBenchTestCase { 

    @Before 
    public void setUp() throws Exception { 
     System.setProperty("webdriver.chrome.driver", "D:\\Kit\\chromedriver_win32\\chromedriver.exe"); 
     setDriver(new ChromeDriver()); 
    } 

    @After 
    public void tearDown() throws Exception { 
     // TODO uncomment below after checking all works as expected 
     //getDriver().quit(); 
    } 

    @Test 
    public void shouldOpenGridColumnVisibilityPopupAndSelectItems() { 
     // class for the grid sidebar button 
     String sideBarButtonClass = "v-grid-sidebar-button"; 

     // class for the sidebar content which gets created when the button is clicked 
     String sideBarContentClass = "v-grid-sidebar-content"; 

     // xpath to select the item corresponding to the necessary column 
     // there are perhaps more "elegant" solutions, but this is what I came up with at the time 
     String columnMenuItemXpath = "//*[contains(@class, 'column-hiding-toggle')]/span/div[text()='Name']"; 

     // open the browser 
     getDriver().get("http://localhost:8080/"); 

     // get the first available grid 
     GridElement firstGrid = $(GridElement.class).first(); 

     // look for the grid's sidebar button and click it 
     firstGrid.findElement((By.className(sideBarButtonClass))).click(); 

     // the sidebar content is created outside the grid structure so don't look for it using the grid search context 
     WebElement sidebarContent = findElement(By.className(sideBarContentClass)); 

     // look for the expected column name and click it 
     sidebarContent.findElement(By.xpath(columnMenuItemXpath)).click(); 
    } 
} 

Und natürlich, wie es aussieht in Aktion

Testbench grid column menu selection

+0

Dank, sehr nützlich ex Planierung! Das funktioniert jetzt gut und ist ein Workaround, bis das Vaadin-Team eine bestimmte Methode für den Zugriff auf dieses Element erstellt. – JorgeHortelano

Verwandte Themen