1

我正在尝试使用 Codeception(使用 webdriver/selenium 进行验收测试)来测试我的应用程序,并希望能够在执行操作后获取链接的值。

基本上我想注销系统,然后单击链接,所以我需要将 url 存储在一个变量中,以便在注销操作后使用。

这是一种像这样的 CMS 操作:

  1. 以管理员身份登录
  2. 创建内容
  3. 创建的内容和显示给用户的链接

我希望那时能够

  1. 获取链接的href值
  2. 登出
  3. 转到 URL 并检查某些页面内容。
4

1 回答 1

2

Codeception 没有方法来获取链接的href,因为它太特殊了,但是您可以在WebHelper 类中定义自己的操作来使用Mink API 来获取href。阅读更多关于模块和助手的信息。

以下是获取链接 href 的操作示例:

public function grabHref($locator)
{
    $webDriver = $this->getModule('Selenium2');

    $link = $webDriver->session->getPage()->findLink($locator);
    if ($link) {
        return $link->getAttribute('href');
    }

    $this->fail("Link '{$locator}' not found");           
}

将此函数放在 _helpers/WebHelper.php 文件中,然后在您的测试套件配置中启用 WebHelper 模块:

class_name: WebGuy
    modules:
        enabled: [Selenium2, WebHelper] 

然后运行codecept build以重建您的 WebGuy 类。

现在,您可以在 cept/cest 文件中使用您的 grabHref 操作:

$I = new WebGuy($scenario);
$I->wantTo('Grab Href');

$I->amOnPage('/');

$href = $I->grabHref('Link text or ID or Title');
于 2014-03-31T18:11:23.840 回答