【问题标题】:GWT : Automate tests of UIs with Selenium/FluentLeniumGWT:使用 Selenium/FluentLenium 自动测试 UI
【发布时间】:2015-04-28 12:46:55
【问题描述】:

我有这么大的问题,我真的需要你的帮助。 基本上,我正在做一个核心技术是GWT的项目,我必须进行功能测试和UI测试。其实我也得用Cucumber这个基于BDD的框架。
现在我来解决主要问题:确实,在每个 Maven 构建中,GWT 都会自动生成小部件的 ID。然后,Selenium 找不到这些小部件,因为它们的 ID 最近更新/更改。此外,我无法使用 (findByName/xPath/cssSelector 等) 方法找到一些小部件。我现在正在研究 FluentLenium,它是 Selenium 的一个覆盖层。我不知道如何解决这个问题,因为我无法控制 GWT 如何在后面生成 Id。 有没有人遇到过同样的问题?

非常感谢。

【问题讨论】:

  • 设置 Widget 的 Id..
  • 这个应用真的很大。该项目始于 1.5 年前,并非所有小部件都有 Id。后面的 Gwt 会在每个 maven 构建 ID 时生成,并且很难处理这个问题。您是否有使用结构化方法管理此问题的解决方案?谢谢。
  • 我没有其他解决方案...有人认为在开发应用程序时需要注意设置 Id ..
  • 这个问题太笼统了!答案是:您需要使用正确的 XPath 或 CSS 定位器,无论哪个您觉得更舒服。
  • 我尝试在 Google 等网站上使用 XPath 和 CssSelector,但 Selenium 无法找出我在测试中使用 XPath 或 CssSelectors 选择的小部件。真正有效的是当我使用 id 进行搜索时,否则,像 Xpath 或 css 或 name 这样的定位器不可靠(根据我的小经验)。是否有任何工具可以帮助我通过单击小部件(例如萤火虫)来为我提供小部件的路径?谢谢

标签: maven selenium gwt cucumber fluentlenium


【解决方案1】:

我使用过 GWT/Selenium/Cucumber。对于整个应用程序中使用的每个 ID,我们都有一个带有 public static String 字段的类文件。这些 id 是用ensureDebugId 设置的。然后在 Selenium/Cubumber 测试中使用相同的类文件以通过 id 查找小部件。我不知道这是否适合你。但在我们的例子中,测试人员控制着 id。

【讨论】:

  • 感谢您的回复。我想知道您是在 project.gwt.xml 文件中添加了 还是使用了 Maven 表示您使用模式 Debug 而不在 project.gwt.xml 中引用它。就我而言,我只想在持续集成中的部署(所以 Maven)中使用模式调试,而不是在 project.gwt.xml 文件中。
  • 我不明白你为什么使用一个封装了所有 id 的类。这个类是否包含一些方法?
  • 是的,我们添加了Debug。但是在一个单独的project.gwt.xml 中继承了主要的project.gwt.xml。通过 Maven 配置文件,为测试构建启用了调试 project.gwt.xml。该类不包含方法,仅包含 id。只是将它们放在一个地方。
  • 你能告诉我你是如何在 maven 配置文件中启用调试 project.gwt.xml 的吗?谢谢
  • 这是带有模块集的普通 gwt maven 配置。设置调试项目,意味着设置projectDebug 而不是正常的配置文件。通过配置文件激活,您可以在您想要的条件下启用配置文件。例如通过传递一个特定的参数。请参阅 GWT 模块:mojo.codehaus.org/gwt-maven-plugin/user-guide/compile.html 和 maven 激活:books.sonatype.com/mvnref-book/reference/…。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 2021-01-10
  • 1970-01-01
  • 2011-12-20
  • 2012-11-04
  • 2012-03-01
  • 1970-01-01
相关资源
最近更新 更多