Vaadin TestBench MenuBarElement - 无法通过集成测试选择子菜单

如何解决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);
        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");**

工作直到选择主菜单但不使用子菜单用户窗体”

你能帮忙解决一下吗?我尝试了谷歌搜索提供的所有可能的解决方案,但没有帮助我。

解决方法

我试过你的例子(我假设 menuItem 是一个 MenuBar),据我所知,它没有什么根本性的错误。不过,我担心 clickElement 在某些情况下可能会有点不稳定,而且它们通常是非常小的时间问题。

您可以尝试一次点击一个项目,而不是成组点击,如果这也不起作用,请在每次调用之间添加一个小延迟。

同样,如果您尝试连续调用多个菜单路径,会有一点延迟或例如在触发命令的每个选择之后将焦点移动到一些完全不同的元素(例如标签)可以稳定测试。尤其是当你的命令很重的时候。

,

深入了解如何创建 TestBench 测试的一种方法是研究 Vaadin 框架本身的集成测试。例如这里是 MebuBar 集成测试的链接

https://github.com/vaadin/framework/blob/master/uitest/src/test/java/com/vaadin/tests/components/menubar/MenuBarIconsTest.java

你看,基本上有三种方法可以找到菜单项

你可以在你的java代码中为MenuBar设置id,通过id和索引号可以找到菜单项(项索引按创建顺序)

findElement(By.id("fontIcon-4"))

或者按类名,第n次出现

findElements(By.className("v-menubar-menuitem")).get(4);

如果标题是唯一的,或者标题文本

findElement(By.vaadin("#Sub item"))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?