Phantomjs 在casperjs测试中处理弹出窗口
我正在尝试对一个登录网页进行测试,其中有可能使用第三方社交登录。例如,当你点击facebook图标时,会出现一个新的弹出窗口,询问用户/密码。我使用文档中指定的waitForPopup和withPopup来处理这个问题,但不起作用。从未在xpath中找到元素(通过xpath),因此我无法在测试中使用facebook登录 这是一个示例代码,用于检查facebook按钮是否存在,单击它并等待弹出窗口:Phantomjs 在casperjs测试中处理弹出窗口,phantomjs,casperjs,Phantomjs,Casperjs,我正在尝试对一个登录网页进行测试,其中有可能使用第三方社交登录。例如,当你点击facebook图标时,会出现一个新的弹出窗口,询问用户/密码。我使用文档中指定的waitForPopup和withPopup来处理这个问题,但不起作用。从未在xpath中找到元素(通过xpath),因此我无法在测试中使用facebook登录 这是一个示例代码,用于检查facebook按钮是否存在,单击它并等待弹出窗口: casper.then(function() { test.comment("When
casper.then(function() {
test.comment("When we click facebook button");
casper.waitForSelector(x(facebookButton), function() {
test.assertExists(x(facebookButton), "Facebook icon is showing");
casper.click(x(facebookButton));
}, function timeout() { // step to execute if check has failed
casper.test.fail("Timeout loading login page");
});
});
casper.then(function() {
casper.waitForPopup(/facebook\.com\/login/, function() {
test.comment("And we fill facebook login info");
casper.withPopup(/facebook\.com\/login/, function() {
this.viewport(1600, 900);
casper.sendKeys(x(facebookEmail), facebookLogin[0]);
casper.sendKeys(x(facebookPassword), facebookLogin[1]);
casper.click(x(facebookLogin));
});
}, function timeout() { // step to execute if check has failed
casper.test.fail("Timeout loading faceebook login");
});
});
测试的输出为:
# When we click facebook button
PASS Facebook icon is showing
# And we fill facebook login info
FAIL Cannot get informations from xpath selector: //input[@id='email']: element not found.
# type: uncaughtError
# file: casper/import-login-testing.js:1058
# error: Cannot get informations from xpath selector: //input[@id='email']: element not found.
# CasperError: Cannot get informations from xpath selector: //input[@id='email']: element not found.
# at getElementInfo (/Users/ginogalotti/testing-presentation/node_modules/casperjs/modules/casper.js:1058)
# at /Users/ginogalotti/testing-presentation/node_modules/casperjs/modules/casper.js:1589
# at casper/import-login-testing.js:84
# at runStep (/Users/ginogalotti/testing-presentation/node_modules/casperjs/modules/casper.js:1553)
# at checkStep (/Users/ginogalotti/testing-presentation/node_modules/casperjs/modules/casper.js:399)
# stack: not provided
对我来说,这意味着正在查找弹出窗口,waitForPopup正在触发,只是没有使用弹出窗口来查找facebookEmail元素。我仍在学习casperjs,因此这可能不是解决问题的最佳方法;但我真的要感谢一些指导
提前感谢,
我正在测试的示例网站:您的代码看起来不错。您使用的是什么PhantomJS版本?请注册到
resource.error
,page.error
,remote.message
和casper.page.onResourceTimeout
事件()。可能有错误。添加了那些日志记录方法,但没有显示任何相关问题。仍然无法在内部找到xpath//input[@id='email']
,这显然是存在的。我的幻影版本是0.8.0;和casperjs0.1.1。无论如何谢谢你!没有这样的幻影JS或CasperJS版本。也许你的意思是1.9.8和1.1.0-beta3。你绝对是对的!我有幻影1.9.18和caper 1.1.0-beta3。我要尝试更新幻影