【问题标题】:Selenium/Selenide: test code refactor for presence of shadowrootSelenium/Selenide:测试代码重构是否存在 shadowroot
【发布时间】:2018-07-09 14:57:58
【问题描述】:

我正在从事一个自动化测试项目,我在其中使用 Java 中的 Selenium/Selenide 为基于 Web 的媒体播放器创建 UI 测试,然后将其集成到我公司的其他产品中。但是,在我的团队正在开发的应用程序中,有一个播放器的 UI(作为 React 组件),然后播放器本身就有一个独立的 UI。所以,基本上,我必须重新设计应用程序和独立播放器的代码:目标是在播放器包中创建代码,然后将其导入应用程序测试项目。

这里的问题是,在独立版本中,Player HTML 代码包含一个 shadowroot,而主应用程序中的 Player React 组件没有。这意味着我必须在独立版本中使用 WebElements,而我将继续在主应用程序测试代码中使用 SelenideElements(以便能够处理在主应用程序中发生并且在独立版本中不可能的某些特定交互播放器)。

通常,对于网页的每个“部分”,我都会创建一个“客户端”类,其中包含查找元素的方法,然后执行与它们的交互和/或验证它们的状态。由于这两个 UI 有我上面解释的差异,我想我将不得不有两组不同的客户端类。我正在考虑做一些事情,比如创建另一个类或接口来尝试找到 shadowroot 元素,并根据是否在 HTML 代码中找到它,初始化两组客户端中的一组。

所以,我的问题是,我如何才能从类/接口/方法的角度整体构建所有这些,以便在两个客户端集中尽可能少地使用双倍代码?

欢迎任何帮助,即使只是为了表明我在以错误的方式思考这个问题。

【问题讨论】:

    标签: java class selenium automated-tests


    【解决方案1】:

    每当我遇到这种情况时

    由于两个 UI 存在差异...我必须有两组不同的客户端类...创建另一个类或接口来尝试找到 shadowroot 元素,并且取决于它是否在HTML 代码与否,初始化两组客户端之一。

    特别是对于as little doubled code as possible in both Client sets,根据我的经验Strategy 提供了非常合适的解决方案。它定义了一系列算法,封装了每个算法,并使它们可以互换。还可以让算法独立于使用它的客户端而变化。因此,您可能会认为算法是您的测试步骤,而客户端是加载的应用程序。

    【讨论】:

      猜你喜欢
      • 2019-03-26
      • 2020-07-09
      • 2011-12-20
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多