Vaadin TestBench MenuBarElement - Невозможно выбрать подменю с помощью теста интеграции
Я реализую тестовый пример интеграции Vaadin для пункта меню, как показано ниже.
MenuBar.MenuItem homeMenu = menuItem.addItem("Home", null, null);
homeMenu.addItem("Dashboard", homeMenuCommand);
homeMenu.addItem("UserForm", homeMenuCommand);
MenuBar.MenuItem studentsAdmissionYear = menuItem.addItem("Admission Year", null, null);
studentsAdmissionYear.addItem("2018", myCommand);
studentsAdmissionYear.addItem("2019", myCommand);
studentsAdmissionYear.addItem("2020", myCommand);
studentsAdmissionYear.addItem("2021", myCommand);
studentsAdmissionYear.addItem("2022", myCommand);
И мой тестовый класс
package org.example;
import com.vaadin.testbench.TestBenchTestCase;
import com.vaadin.testbench.elements.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.net.MalformedURLException;
import java.net.URL;
import static org.junit.Assert.assertEquals;
public class ApplicationFullIT extends TestBenchTestCase {
WebDriver webDriver;
@Before
public void setUp() throws Exception {
setDriver(new ChromeDriver());
getDriver().get("http://localhost:8082/");
}
@Test
public void testMenu() throws MalformedURLException {
URL userFormUrl = new URL("http://localhost:8082/#!UserForm");
MenuBarElement menuBarElement = $(MenuBarElement.class).first();
menuBarElement.clickItem("Home","UserForm");
// assertEquals(getDriver().getCurrentUrl(),userFormUrl);
}
@After
public void tearDown(){
getDriver().quit();
}
}
Код
**MenuBarElement menuBarElement = $(MenuBarElement.class).first();
menuBarElement.clickItem("Home","UserForm");**
работает до выбора главного меню, но не работает с подменю «UserForm»
Не могли бы вы помочь с решением? Я пробовал все возможные решения, доступные в Google, но мне это не помогает.
2 ответа
Я пробовал твой пример (полагаю
Вы можете попробовать щелкать элементы по одному, а не в группе, и если это тоже не помогает, добавьте небольшую задержку между каждым вызовом.
Точно так же, если вы пытаетесь вызвать несколько путей меню подряд, небольшая задержка или, например, перемещение фокуса на какой-то совершенно другой элемент (например, метку) после каждого выбора, запускающего команду, может стабилизировать тест. Особенно, если ваши команды тяжелые.
Один из подходов к более глубокому пониманию того, как создаются тесты TestBench, - это изучение самих интеграционных тестов Vaadin Framework. Например, вот ссылка на интеграционный тест MebuBar.
Вы видите, что есть три основных способа найти пункт меню.
Вы можете установить идентификатор для MenuBar в своем Java-коде, и вы можете найти элемент меню, используя идентификатор и номер индекса (индекс элемента в порядке создания)
findElement(By.id("fontIcon-4"))
Или по имени класса, n-е вхождение
findElements(By.className("v-menubar-menuitem")).get(4);
Или текст подписи, если подписи уникальны
findElement(By.vaadin("#Sub item"))