当前位置: 首页 > 面试题库 >

为什么要使用Page Factory?

越涵衍
2023-03-14
问题内容

我是一名新的测试工程师,一直在阅读有关页面对象模型的信息并实现它们,并不断涉及Page Factory。我知道Page
Factory是一个POM,它提供了其他功能,例如在调用PageFactory时实例化所有元素,以及更具可读性的测试代码(尽管在可读性方面我还不完全了解)。明确地说,我在POM上出售。代码的可重用性和相对易维护性非常好,我正在朝这个方向发展。

我得出的两个问题是:

  • 为什么我要实例化所有元素而不是动态地实例化?
  • 我缺少的Page Factory有哪些优势?

问题答案:

一些答案表明,PageFactory在实例化时会“加载”所有WebElements-这实际上是不正确的。

元素只有在您访问它们后才加载。它是通过基类和RealProxy完成的。它确实FindElement(s)By在后台使用了标准方法,因此拥有WebElement与存储By和在需要时加载By并没有真正的性能优势。

我选择不使用PageFactory模型的原因之一是,我可能正在搜索一个我不希望存在的元素,并且通过使用自动连线方法,它会搜索是否存在该元素,然后再说“测试中不存在”。

另一个问题是PageFactory实例化WebElement和Driver.FindBy实例化WebElement之间存在细微的差异。让我感到困扰的一个原因是PageFactory的版本未实现IWrapsDriver,这意味着您无法获得用于从元素中查找元素的驱动程序。这看起来似乎并不多,但是这意味着当您想要向WebElement方法编写扩展而又需要驱动程序的扩展时,您必须找出一种(更为复杂的方式)获取驱动程序的方法,尤其是因为我相信PageObjectModel应该没有直接参考驱动程序…

但这就是说,在很多情况下,开箱即用的PageFactory方法非常好。我认为使用(或不使用)PageFactory的关键只是对测试代码和页面对象模型的工作方式和交互方式采用一致的方法,因为这是可维护性的关键。



 类似资料:
  • 本文向大家介绍为什么要使用 kafka,为什么要使用消息队列?相关面试题,主要包含被问及为什么要使用 kafka,为什么要使用消息队列?时的应答技巧和注意事项,需要的朋友参考一下 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性:项目开始的

  • 问题内容: 我注意到,Oracle JDK中使用了许多Java 8方法,如果给定的对象(参数)为,则会在内部抛出该方法。 但是,如果取消引用对象,则将被抛出。那么,为什么要做这个额外的null检查并抛出 ? 一个明显的答案(或好处)是它使代码更具可读性,我同意。我很想知道在方法开始时使用的其他原因 。 问题答案: 因为您可以这样做使事情变得 明确 。喜欢: 或更短: 现在您 知道了 : 当 成功使

  • 问题内容: 我是Mockito的新手,我已经开始学习它。但是我有一些疑问。为什么我们需要使用Mockito?据我所知,它用于模拟(创建虚拟对象)并在具有实际运行代码之前编写测试用例。但是,如果我想测试已经实施的代码以检查它们是否正常运行,该怎么办。我如何使用Mockito进行测试? 例如,我有CRUD方法,我想通过使用我的Create方法在数据库中实际插入数据来测试Create是否正常运行,这与其

  • 本文向大家介绍为什么要使用RabbitMQ?相关面试题,主要包含被问及为什么要使用RabbitMQ?时的应答技巧和注意事项,需要的朋友参考一下 可靠性(Reliability) RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。 灵活的路由(Flexible Routing) 在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ 已

  • 问题内容: 为什么我们要使用方法设置参数,因为我们可以通过在中设置参数并使用来获取参数来完成同样的事情? 问题答案: 是动态的,其可以被设置和复位运行期间。 所指定的是静态的,在应用程序的生命周期内不会更改。 例: 数据库属性,例如数据库名称配置属性。它将主要配置为上下文 并且,如果要设置基于运行时更改派生的属性值,则上下文属性应为“上次登录的用户”或“失败次数”。

  • 本文向大家介绍为什么要使用 hibernate?相关面试题,主要包含被问及为什么要使用 hibernate?时的应答技巧和注意事项,需要的朋友参考一下 hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码。 hibernate 是一个优秀的 ORM 实现,很多程度上简化了 DAO 层的编码功能。 可以很方便的进行数据库的移植工作。 提供了缓存机制,是程序执行更改的高效

  • 本文向大家介绍为什么要使用Elasticsearch?相关面试题,主要包含被问及为什么要使用Elasticsearch?时的应答技巧和注意事项,需要的朋友参考一下   因为在我们商城中的数据,将来会非常多,所以采用以往的模糊查询,模糊查询前置配置,会放弃索引,导致商品查询是全表扫面,在百万级别的数据库中,效率非常低下,而我们使用ES做一个全文索引,我们将经常查询的商品的某些字段,比如说商品名,描述

  • 我注意到Oracle JDK中的许多Java 8方法使用,如果给定的对象(参数)是,则在内部抛出。 但是,如果对象被取消引用,则仍然会引发。那么,为什么要进行额外的空检查并抛出呢? 一个明显的答案(或好处)是它使代码更易读,我同意。我很想知道在方法开头使用的其他原因。