我正在做一些集成测试,我用网格替换了一些表。此时,默认情况下我有一些可见列,其他列隐藏如下:
column6.setHidable(true);
column6.setHidden(true);
现在我正在尝试进行一些集成测试。为了获得网格,我可以使用该方法(这是该视图中唯一的网格):
$(GridElement.class).first();
这很好用。但是对于我的测试(使用Vaadin Testbench),我需要检查网格隐藏列中的一些值。我在谈论这个按钮:
我尝试使用Vaadin调试控制台获取允许用户显示/隐藏列的按钮名称,但调试控制台只能选择整个网格元素,而不是此菜单。
此外,我还检查GridElement内部是否存在任何已经实现的方法,使我可以访问此菜单但没有任何成功。
答案 0 :(得分:1)
通常情况下,chrome developer tools(或类似于firefox和ie / edge等)是您在这种情况下最好的朋友。到目前为止,我还没有发现任何专用于该特定按钮的内容。但是,您可以通过选择按特定类组成此功能的项目来解决此限制:
以下测试方法显示了一个快速实现,它应该为您提供一个起点:
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();
}
}
当然,它在行动中的样子