在数据库中存储POM对象

时间:2017-12-12 08:30:31

标签: selenium selenium-webdriver

我知道在页面对象模型中DOM对象是在与以下格式的特定页面相关的类文件中声明的事实:

@FindBy(xpath = "//*[@id='page_content_inner']/div/a[1]/div")
private WebElement setupBtn;

我想知道我们是否可以将这些xpath存储在数据库中并从它们访问它。

我现阶段无法在此阶段分享任何进一步的信息,因为我们仍然不清楚。

1 个答案:

答案 0 :(得分:0)

以下是两种方法。

方法#1

这将只是一个黑客攻击,你也将陷入对JDK风格和版本的依赖。

以下是您需要执行的高级操作。我已经创建了一个详细的blog post,讨论如何在JDK7和JDK8中执行此操作[我还没有在JDK9中尝试过这个,所以你的里程可能会有所不同]

  • 创建实现每个注释的类(注释在内部表示为接口,因此您可以构建实现它们的类)
  • 使用反射来查询包含注释的字段,一旦有了它,就可以实例化为注释创建的类,其中包含您现在需要表示的值(在您的情况下,使用数据库中的值)然后推送它回到了现场。

那应该为你做。

方法#2

在这里,我们基本上可以依靠Selenium的页面工厂模型为您提供的自定义支持。在这里,您需要执行以下操作列表,以完成此操作。有关详细概述,请参阅我的博文here

  1. 自定义org.openqa.selenium.support.pagefactory.ElementLocator
  2. 自定义org.openqa.selenium.support.pagefactory.ElementLocatorFactory
  3. 一种自定义方法,用于解释注释并从注释中读出值。
  4. 一个自定义注释,用于捕获一些元数据,这些元数据可用于从DB中读取给定Web元素的定位器。