在与Selenium中的元素交互之前如何隐式执行特定方法?

时间:2019-12-03 05:39:11

标签: selenium selenium-webdriver

我正在自动化的应用程序正在使用jQuery和ajax调用。因此,在与元素进行交互之前,我等待文档准备好并且所有ajax调用完成。只有这样,我才能与sendKeys()click()等元素互动

为此,我需要在元素交互的任何地方显式添加该方法(例如waitForDocumentReadyAndAjaxTocomplete())。

无论如何,在与元素交互之前,我是否可以隐式调用该方法waitForDocumentReadyAndAjaxTocomplete()

2 个答案:

答案 0 :(得分:0)

是的,有办法。您可以创建一个实用程序类,该实用程序类使用要使用的定位器来创建标识符,并且在创建标识符的方法中可以调用waitForDocumentReadyAndAjaxTocomplete方法。

基本上,实用程序类将处理该调用,实际上您可以使用try catch或轮询机制来根据需要优化对方法的调用。

这样,您不必每次都调用waitForDocumentReadyAndAjaxTocomplete方法。它将在您的实用程序类中调用。

答案 1 :(得分:0)

您可以使用PageFactory.initElements(..)的功能:

  1. 以“页面对象”模式设计绑定
  2. 使用自定义ElementLocatorFactory / ElementLocator来初始化页面类的元素。您可以在其中添加等待dom事件的时间,然后再查找元素。

您可以检查AjaxElementLocatorFactory的实现方式。采用这种方法应该没有问题,因为所有关键方法都是公开的,因此可以简单地覆盖。

但是我想您必须为所有带有@CacheLookup注释的字段提供@FindBy注释