You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium页面对象模型中如何处理多页面公共Web元素?

关于公共Web元素的页面对象类设计建议

当然应该创建一个单独的公共页面对象类来封装这些全局通用的Web元素,这完全符合页面对象模型(POM)的设计原则,具体原因和实现思路如下:

  • 减少代码冗余:如果每个页面类都重复定义这些公共元素(比如顶部导航栏、页脚、全局搜索框),后续修改元素定位时要逐一修改所有页面类,而用公共类只需要维护一处即可,大幅降低维护成本。
  • 提升代码可读性:其他页面类通过继承或组合公共类,能清晰区分全局通用元素和当前页面独有元素,代码结构更直观。
  • 符合单一职责原则:公共类专门负责全局通用元素及对应操作(比如点击首页按钮、执行全局搜索),每个页面类只需专注自身页面的元素和业务逻辑。

具体实现思路

  1. 先创建基础公共类,比如CommonElementsPage,封装所有全局相同的元素和操作方法:
// 示例Java代码
public class CommonElementsPage {
    // 全局搜索框
    @FindBy(id = "global-search-input")
    private WebElement globalSearchInput;
    
    // 首页导航按钮
    @FindBy(css = ".nav-home")
    private WebElement homeNavBtn;
    
    // 全局搜索操作方法
    public void performGlobalSearch(String keyword) {
        globalSearchInput.sendKeys(keyword);
        globalSearchInput.submit();
    }
}
  1. 其他页面类直接继承该公共类,即可直接使用这些元素和方法:
public class ProductPage extends CommonElementsPage {
    // 产品页面独有元素
    @FindBy(id = "product-detail-title")
    private WebElement productTitle;
    
    // 产品页面独有操作
    public String getProductTitle() {
        return productTitle.getText();
    }
}
  1. 如果遇到不支持继承的场景,也可以用组合方式,在各页面类中实例化公共类对象,调用其元素和方法。

这种方式能让自动化测试代码更易维护,降低后续迭代成本,是页面对象模型中处理全局公共元素的标准做法。

内容的提问来源于stack exchange,提问作者NoNoNo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:12:04