如何在 Codeception 验收测试中为 <input type="email"> 获取 WebGuy->fillField?

Posted

技术标签:

【中文标题】如何在 Codeception 验收测试中为 <input type="email"> 获取 WebGuy->fillField?【英文标题】:How do I get WebGuy->fillField for <input type="email"> in Codeception acceptance test? 【发布时间】:2014-09-09 07:09:48 【问题描述】:

在 Codeception 中,当我有 fillField 时工作正常 &lt;input type="text" name="email"&gt; 但在&lt;input type="email" name="email"&gt; 时不起作用

我已尝试使用以下代码

$I->fillField('input[name=email]', 'user@domain.com');

还有$I->fillField('email', 'user@domain.com'); 但它不起作用。我收到以下错误。

ElementNotVisibleException:元素当前不可见

【问题讨论】:

顺便说一句,我正在使用 WebDriver 和 Firefox 【参考方案1】:

我还没有在电子邮件字段上测试过如果它不起作用,您可以选择一些解决方法,如下所示:-

(1) 使用JS

$I->executeJS('window.document.getElementsByName('email')[0].value='###value###'');

(2) 使用低级 webdriver 代码:-

$I->executeInSelenium(function (\Webdriver $webdriver) 
    $webdriver->findElement('###XPATH###')->sendKeys(###value###);
);

同样,如果您遇到任何 Codeception 特定问题,请提出here

希望对你有帮助。

【讨论】:

【参考方案2】:

实际上我得到了答案,现在我可以通过 XPATH 定位任何表单元素,而无需运行 executeInSelenium

所以在 chrome/firefox 中我检查了 dom 并右键单击并复制 xpath,

例如:$I-&gt;fillField('//*[@id="register-form"]/fieldset/section[3]/div/div/label/input', 'user@domain');

它也适用于其他表单元素

【讨论】:

以上是关于如何在 Codeception 验收测试中为 <input type="email"> 获取 WebGuy->fillField?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 selenium 和 codeception 检测验收测试中的 dom 变化

Codeception 验收测试因底部导航而失败

Codeception:生成验收测试在并行虚拟机上引发异常

Codeception 验收测试在浏览器启动之前运行

使用 PHP Codeception 验收测试检查源代码中的单次出现

Codeception - 验收测试有效,但功能测试无效