当前位置: 首页 > 知识库问答 >
问题:

如何为Vaadin应用程序的UI组件生成唯一ID?

薄瑞
2023-03-14

通常,Vaadin应用程序为应用程序的每个用户界面组件设置一个顺序ID。不幸的是,这些ID对于测试自动化不是很有用,因为它们是动态生成的,并且可能在运行时(每个会话或添加新组件时)发生更改。

对于测试自动化,需要(至少每个应用程序)每个组件的唯一和静态ID。

A) Vaadin的setId()方法[1]能否用于生成测试自动化友好的组件ID?

B) Vaadin的addStyleName()setStyleName()是否可以生成一个自定义CSS样式,该样式以后可能会被“滥用”为ID?

[3]中讨论的一些设计思想:

  • 将id创建与id分配分开
  • 使用命名策略创建id
  • 在元件连接时指定id

[1]https://vaadin.com/api/7.7.3/com/vaadin/ui/Component.html#setId-java.lang.String-

[2] https://vaadin.com/api/7.7.3/com/vaadin/ui/Component.html#setStyleName-爪哇。串-

[3]https://vaadin.com/forum#!/thread/278068

共有1个答案

宗政卓
2023-03-14

a)Vaadin的setId()方法[1]可以用来生成测试自动化友好的组件ID吗?

是的,它替换了弃用的setDebugId()。从其javadoc:

从接口复制的描述:com.vaadin.ui.组件

为用于客户端测试目的的组件添加唯一id。保持标识符唯一是程序员的责任。

我们没有将其用于任何命名策略自动化“框架”,正如您在第3个链接中讨论的那样。我们根据内部协议手动设置组件ID。请注意,并非所有组件都可以分配ID,例如菜单项。

B) Vaadin的addStyleName()或setStyleName()是否可以通过生成自定义CSS样式(以后可能会被“滥用”为ID)来使用?

你可以,但它或多或少与A相同)。然后,您可以使用findElement(By.className("一些类"))查找元素;

按类名称(@NotNull字符串类名称)列出的公共静态

根据“class”属性的值查找元素。如果一个元素有许多类,那么这将与每个类匹配。例如,如果值为“one-two-onone”,则以下“className”将匹配:“one”和“two”

另一个选项是使用xpath,例如findElement(By.xpath(“//*[contains(@class,'column hidden toggle'))]/span/div[text()='Name'])

虽然非常强大和灵活(如果我没有把.id的

 类似资料:
  • 问题内容: 如何使用数据库查询回调设置变量值?我该怎么办? 问题答案: 自从使用node.js已经有一段时间了,但是我想我可以提供帮助。 首先,在node中,您只有一个线程,应该使用回调。您的代码将发生的情况是查询将排队等待执行,但是循环将毫无意义地连续作为繁忙循环运行。 您应该可以通过以下回调来解决您的问题: 并这样使用 我在大约2年内没有编写任何node / js的代码,也没有进行测试,但是基

  • 本文向大家介绍如何使用Swift为iPhone / iPad生成设备的唯一ID?,包括了如何使用Swift为iPhone / iPad生成设备的唯一ID?的使用技巧和注意事项,需要的朋友参考一下 UDID(唯一设备标识符)-由40个十六进制字符组成的序列,用于唯一标识iOS设备。 从iOS 5开始,Apple已弃用UIDevice唯一标识符,这意味着获取唯一ID的传统方式。苹果公司删除了真正唯一的

  • 问题内容: 我一般在vaadin框架上有问题。 我创建了一个类来扩展vaadin应用程序(MyFirst),然后用vaadin可视设计器(MyFormApp)创建了一个自定义组件。 我确实实例化了自定义组件MyFormApp,并将其添加到MyFirst的主窗口中。 部署应用程序后,vaadin生成的页面未显示任何组件。 我的代码: 我的第二堂课是MyFirstApp(自定义组件): 在执行serv

  • 我在Tomcat中删除了war文件。 并访问http://localhost:8080/camel-example-servlet-rest-tomcat/api-docs,我得到了这个... {“apiVersion”:“1.2.3”,“swaggerVersion”:“1.2”,“api”:[{“path”:“/User”,“description”:“User rest service”}]

  • 问题内容: 我需要为数据库主键列生成唯一的Long ID。 我以为我可以使用 UUID.randomUUID()。getMostSignificantBits(), 但是有时它会产生一些负数,这对我来说也是个问题。 是否有可能仅从UUID生成正数长?会有数十亿个条目,因此我希望每个生成的键必须唯一。 问题答案: 之所以起作用,是因为当您按位与1进行操作时,它允许按原样传递同一位数字;当您按位与0进