我正在尝试使用 Codeception(使用 webdriver/selenium 进行验收测试)来测试我的应用程序,并希望能够在执行操作后获取链接的值。
基本上我想注销系统,然后单击链接,所以我需要将 url 存储在一个变量中,以便在注销操作后使用。
这是一种像这样的 CMS 操作:
- 以管理员身份登录
- 创建内容
- 创建的内容和显示给用户的链接
我希望那时能够
- 获取链接的href值
- 登出
- 转到 URL 并检查某些页面内容。
我正在尝试使用 Codeception(使用 webdriver/selenium 进行验收测试)来测试我的应用程序,并希望能够在执行操作后获取链接的值。
基本上我想注销系统,然后单击链接,所以我需要将 url 存储在一个变量中,以便在注销操作后使用。
这是一种像这样的 CMS 操作:
我希望那时能够
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');