【问题标题】:Selenium - Every page has a 'next' button but the same button doesn't always lead to the same pageSelenium - 每个页面都有一个“下一步”按钮,但同一个按钮并不总是指向同一个页面
【发布时间】:2015-09-29 02:36:21
【问题描述】:

我正在办公室做一些硒工作,最近对我正在自动化的页面进行了一些更改,我试图找出最好的方法。我不确定如何解释一切,但我会试一试。

我有一张包含不同“步骤”的付款表格。每个步骤都要求您填写一些信息,它们都有一个“继续”按钮可以进入下一步。由于每个 pageObject 共享同一个按钮,我使用该逻辑创建了一个抽象类,并让页面从该逻辑扩展。

类似这样(删除所有与问题无关的代码):

public abstract class AbstractPaymentPage<T extends AbstractPaymentPage> extends AbstractPageObject {

  @FindBy(id = "continueBtn")
  private WebElement continueButton;

  public AbstractPaymentPage(WebDriver driver) {
    super(driver);
  }

  public T nextStep() {
    continueButton.click();
    return this.initPageObject(getNextStepClass());
  }

  protected abstract Class<T> getNextStepClass();
}

子类是这样定义的:

public class PersonalInfoPage extends AbstractPaymentPage<PaymentCountryPage> {

  public PersonalInfoPage(WebDriver driver) {
    super(driver);
  }

  @Override
  protected Class<PaymentCountryPage> getNextStepClass() {
    return PaymentCountryPage.class;
  }

}

典型的用法是调用PersonalInfoPage.nextStep(),它将单击继续按钮并初始化下一页上的所有webElement。

现在,这可行,我实际上对它非常满意,但它只有在当前页面能够准确判断下一个页面出现的情况下才有效。在这种情况下,“PersonalInfoPage”知道下一个是“PaymentCountryPage”。但是随着这些新的变化,在某些情况下,流程将是 PageA->PageB->PageC->PageD,其他可能是 PageA->PageD,其他可能是 PageA->PageC->PageD。

你们认为在不以大量代码重复结束的情况下处理此类事情的最佳方法是什么?正在考虑也许我可以使用通用变量而不是“getNextStepClass”的实际目标类,但我不确定它是如何工作的。

不知道是否足够清楚以获得一些帮助,但请随时询问你们认为需要更多解释的任何内容。

【问题讨论】:

    标签: java selenium abstract-class extends pageobjects


    【解决方案1】:

    可以通过在 PageObjectModel 中引入一些自加载逻辑来处理这种复杂的场景。此外,IoCLoadableComponentSlowLoadableComponent 在这里可以提供很大帮助。简而言之 - 让最后一页知道如何通过调用上一页(如果适用于您的域)来加载自己。

    代替

    PageA->PageB->PageC->PageD

    你会得到类似的东西

    PageD-load->PageC-load->PageB-load->PageA
    

    这里的明显优势将是可重用的接收控制流,以避免

    以大量重复代码结束

    【讨论】:

    • 所以你的意思是,而不是调用第一页并告诉它加载下一个和下一个通过“nextStep()”方法加载下一个等等,应该加载最后一个页面(比如“paymentSuccessPage)并传递给它足够的参数,以便它知道如何通过加载和浏览所需的先前页面来加载自己?我看到的唯一问题是我不确定我可以使用gets在之间移动页面...现在需要研究如何完成。
    猜你喜欢
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2018-07-07
    • 2017-09-17
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多