Selenium-页面对象模型与定义公共静态final

Selenium-页面对象模型与定义公共静态final,selenium,selenium-webdriver,Selenium,Selenium Webdriver,在Selenium中,我们可以将对象存储库维护为页面对象模型。但是我们可以通过将变量定义为publicstaticfinal来维护或通过一个单独的类,并在需要时在其他类中使用 例如 package ObjectRepository; public class OR_SFStandard { public static final String NewBtn = "//a[@title='New']"; } 并在代码中使用与 package common; import Object

在Selenium中,我们可以将对象存储库维护为页面对象模型。但是我们可以通过将变量定义为publicstaticfinal来维护或通过一个单独的类,并在需要时在其他类中使用

例如

package ObjectRepository;

public class OR_SFStandard 
{ 
   public static final String NewBtn = "//a[@title='New']";
}
并在代码中使用与

package common;
import ObjectRepository;

public class Deal 
{
    public void newDeal(WebDriver driver)
    {
    driver.findElement(By.xpath(ObjectRepository.NewBtn)).click();
    }
}

有谁能帮我理解其中的区别,还有什么更好的方法吗?

我想说,这是偏好的问题。我喜欢将所有相关数据放在一个POP类中。Others更愿意使用与这些文件不同的文件

有些人可能认为,存储库允许他们重用跨不同页面共享的元素,从而限制了重复。但事实并非如此。如果您必须在POM之间共享元素,这意味着您以错误的方式实现了它。即使涉及到页脚、菜单等元素


在这种情况下,您应该考虑并实施所有操作和/或那里的操作。

我想说,这是偏好的问题。我喜欢将所有相关数据放在一个POP类中。Others更愿意使用与这些文件不同的文件

有些人可能认为,存储库允许他们重用跨不同页面共享的元素,从而限制了重复。但事实并非如此。如果您必须在POM之间共享元素,这意味着您以错误的方式实现了它。即使涉及到页脚、菜单等元素


在这种情况下,您应该考虑并实施所有的行动和/或那里。

根据您的问题,并根据我的经验,因为我已经使用了这两种方法。我建议使用POM的标准实践。POM的主要特点是易于维护

页面对象上有定位器,所以可以逐页查看并修复它们 如果有任何问题。公共定位器是基本页对象的一部分,因此 您可以在基本页对象上获取所有公共定位器

如果在单独的类中进行管理,则

假设您有200个测试用例,40-50页对象,并且您是 如果将所有定位器(比如500个)都放在一个类中,那将非常困难 难以管理和调试以修复问题。这也会造成混乱


根据你的问题,根据我的经验,我使用了这两种方法。我建议使用POM的标准实践。POM的主要特点是易于维护

页面对象上有定位器,所以可以逐页查看并修复它们 如果有任何问题。公共定位器是基本页对象的一部分,因此 您可以在基本页对象上获取所有公共定位器

如果在单独的类中进行管理,则

假设您有200个测试用例,40-50页对象,并且您是 如果将所有定位器(比如500个)都放在一个类中,那将非常困难 难以管理和调试以修复问题。这也会造成混乱