使用Codeception

时间:2015-04-29 11:12:30

标签: html forms dom selenium-webdriver codeception

我对Codeception相对较新,我正在尝试使用它和Selenium WebDriver与Firefox进行表单的验收测试。表格(可从http://www.brighton-hove.gov.uk/content/parking-and-travel/parking/find-your-parking-zone获取)主要包括一个文本框和一个自动填充的表格。如果输入到文本框中导致多个匹配,则插入到DOM中;每个字段也有一个提交按钮。 我遇到的问题是,当在Firefox中正常测试时,行为与预期一致,并且在初始文本搜索返回多个匹配的情况下自动填充(例如,输入任何布莱顿邮政编码,尽管特定情况是搜索'布莱顿市政厅,巴塞洛缪广场',返回3结果)。但是,当尝试通过Codeception进行测试时(运行完整测试或通过控制台尝试每个步骤),将插入到DOM中,但似乎永远不会填充实际结果(它包含的唯一元素是'请选择你的地址......')。 我的测试步骤如下: $ I-> amOnUrl(' HTTP://www.brighton-hove.gov.uk/content/parking-and-travel/parking/find-your-parking-zone'); $ I-> fillField('输入您的邮政编码或门牌号码和街道','布莱顿市政厅,巴塞洛缪广场'); //这里使用XPath作为表单元素' ' id' s' class' es和' name' s是自动生成的(上面的那个恰好有一个标签)。 $ I->点击(" // DIV [@id =' achieveform'] /形式/ DIV / DIV / DIV [1] / DIV [1] / DIV / DIV [3] / div / input [@type ='提交'和@value ='搜索'])&#34 ;; //我也尝试过使用' submitForm(...)'在这里,而不是只是单击按钮。 //等待不必要的长时间,希望下拉列表出现并填充... $ I-> waitForElement(" // DIV [@id =' achieveform'] /形式/ DIV / DIV / DIV [1] / DIV [1] / DIV / DIV [7] / div / div [3] / div / div [1] / span / select",5); //第一个选择是...... $ I-> seeElementInDOM(" // DIV [@id =' achieveform'] /形式/ DIV / DIV / DIV [1] / DIV [1] / DIV / DIV [7] / DIV / DIV [3] / DIV / DIV [1] /跨度/选择/选项[1]&#34); // ...但它并没有像预期的那样有4个选项。 $ I-> seeNumberOfElements(" // DIV [@id =' achieveform'] /形式/ DIV / DIV / DIV [1] / DIV [1] / DIV / DIV [7] / div / div [3] / div / div [1] / span / select / option",4); 虽然我希望执行的测试基本上是黑盒子,但我的下一步行动是尝试查看表单提交和DOM更新,即使系统底层结构的知识水平不是必需的。我忽略了简单的事情吗?任何指针将不胜感激。

2 个答案:

答案 0 :(得分:1)

道歉,事实证明它与Codecepetion没有任何关系:问题部分与搜索表单后面的后端逻辑有关(它似乎不像逗号)和部分是由于我没有注意到在Codeception之外执行相同的操作时,实际上也会发生空下拉列表的行为。

主持人:现在可以关闭/删除此线程(因为问题在Codeception的上下文中是非问题)。

答案 1 :(得分:0)

似乎您没有在搜索框的右侧字段或文本输入字段中填写值:

代替:

$I->fillField('Enter your postcode or house number and street','Brighton Town Hall, Bartholomew Square');

使用:

$I->fillField('.dataelr input', "Your Value here");

希望它有所帮助。