在 Geb 中动态设置页面 url

Setting page url dynamically in Geb

在这种情况下,我想从主页导航到子页面并执行一些操作。子页面的url是动态生成的,但是页面内容是一样的。这是我到目前为止尝试过的:

主要class:

to MainPage
    SubPageButton.click()
    to SubPage
    SelectAddressButton.click()

页面中 class:

public class SubPage extends Page {
    static url = getCurrentUrl()
    static content = {
        SelectAddressButton { $("button", 0) }
    }
}

我也尝试过(没有成功)

  1. 定义子页面的静态内容(SelectAddressButton) 在主页的 Page 对象中。
  2. 定义没有 url
  3. 的子页面

提前致谢!

它不会工作,因为加载 class 时会初始化静态字段。

但是,您可以在您的规范中使用 go "http://my_dynamic_url_string",然后进行断言。 at 断言也适用于此。

此外,如果您的 "dynamic" url 可以参数化,您应该看看 Advanced Page Navigation

定义没有 url 静态字段的 Page 应该可行。我已经用了很多。目前我使用 Geb '0.10.0' 并通过 withNewWindow { link.click(CustomPage) } 使用它,它为我进行静态 at 验证。或者您可以将逻辑放在方法中,并在传递给 withNewWindow.

的闭包中调用它们

例如(未经测试):

class CustomPage {
  static content = {
      SelectAddressButton { $("button", 0) }
  }

  static at = { "check smth" }

  def orSomehowLikeThis() {
    assert "smth"
    SelectAddressButton.click() // accessing content
  }
}

withNewWindow { link.click(CustomPage) } {
  orSomehowLikeThis()
}

重写 Page class 中的方法 getPageUrl

查看源代码规范、页面。注意如何调用 getPageUrl。