【发布时间】:2014-03-28 10:54:27
【问题描述】:
我几天前就遇到了这个问题,但找不到解决方案。希望你能帮助我。
我有以下登录表单:将括号想象为输入字段!
[选择组]
[输入用户]
[输入密码]
选择组是一个建议字段。如果您输入一个字符,它会在数据库中搜索包含该字符的组,并像下拉列表一样显示 ist。
我想要做的是在用 casperjs 输入一个字符后点击一个建议。
我在浏览器控制台中尝试了以下代码,对我来说效果很好:
//type r into the select group
document.querySelector('.ember-view.ember-text-field.form-control').value = 'r';
//focus to input userfield to view suggestions in selectGroup field (normally it is shown without doing a focus but if you do it programmatically you need to focus to view the suggestions)
document.querySelector('#inputUser').focus()
// the selector div.tt-dataset-0 p selcts the first suggestion
setTimeout(function(){
document.querySelector('div.tt-dataset-0 p').click()
}, 200);
如前所述,在浏览器中执行此代码时会成功执行此结果,但如果我在 casperjs 的评估函数中使用它,则它不起作用。它只会将 r 写入建议框中,而不单击建议(我用屏幕截图检查过)。
我首先尝试用 casperjs 函数解决这个问题:
this.fillSelectors('form#loginForm', {
'.ember-view.ember-text-field.form-control': 'r'
}, false);
this.mouse.click('div.tt-dataset-0 p');
但是这个功能不起作用。并且键入想要的组名也不适用于登录,因为登录需要一些与建议绑定的信息。
我尝试使用 DALEKJS(使用 phantomjs)(首先输入 r,然后单击带有 jquery 代码的建议)进行相同的尝试,并且效果很好。
希望这对你来说已经足够了。
干杯 izocan
【问题讨论】:
-
您是否尝试过使用
waitUntilVisible直到建议出现在屏幕上? casperjs.readthedocs.org/en/latest/modules/… -
确保您等待结果出现,同时在评估函数中使用 jquery 与页面交互时,您是否尝试 $('#id').click(); ?
-
大家好,感谢您的建议,据我判断,在 phantomjs 中的 DOM 中从未出现过建议元素。我收到以下错误:FAIL "div.tt-dataset-0 p" 从未出现在 5000 毫秒 # 类型:uncaughtError # 文件:caspertest.js # 错误:"div.tt-dataset-0 p" 从未出现在 5000 毫秒 # 堆栈:未提供 FAIL 在 8.767 秒内执行 15 次测试,14 次通过,1 次失败,0 次可疑,0 次跳过。 1 次失败测试的详细信息: In caspertest.js Test KIXOperator Loginpage uncaughtError: "div.tt-dataset-0 p" never appear in 5000ms
标签: javascript jquery phantomjs casperjs gui-testing