我有一个奇怪的问题,当我通过Selenium(使用Intern.io框架)运行功能测试时,只识别第一个元素;返回错误后,我尝试访问的任何元素:
Error: Error response status: 7
我知道这个回复可以解决:
{summary:'NoSuchElement',
detail:'An element could not be located on the page using the given search parameters.'}
这个错误很令人沮丧,因为我知道该元素绝对可用。
这是我的简单功能测试失败:
define([
'intern!object',
'intern/chai!assert',
'require'
], function (registerSuite, assert, require) {
registerSuite({
name: 'search',
'geocode search test': function () {
return this.remote
.get('http://localhost:8181')
.elementByCssSelector('.modal-close').clickElement()
.elementByCssSelector('#location_search_field').clickElement().type('San Francisco, CA')
}
});
});
测试将找到.modal-close
元素并适当地单击它,但是,它会在尝试查找#location_search_field
元素时返回错误(抛出上面提到的错误)。
如果我注释掉.elementByCssSelector('.modal-close').clickElement()
行,那么selenium找不到位置输入字段并用提供的字符串填充它就没有问题。
我也尝试了elementById('location_search_field')
方法。
如果你想知道我的环境数组,那么这里有一个副本:
environments: [
{
browserName: 'firefox',
platform: 'MAC',
cssSelectorsEnabled: true,
javascriptEnabled: true,
applicationCacheEnabled: true,
webStorageEnabled: true
}
]
非常感谢任何帮助。
答案 0 :(得分:4)
以为自从我弄明白以后我就会发布答案。我已经了解到,只要我在每次浏览器操作后添加.end()
,测试就会继续按照我的预期运行。
以下是我的示例中的更新代码:
define([
'intern!object',
'intern/chai!assert',
'require'
], function (registerSuite, assert, require) {
registerSuite({
name: 'search',
'geocode search test': function () {
return this.remote
.get('http://localhost:8181')
.elementByCssSelector('.modal-close').clickElement()
.end()
.elementByCssSelector('#location_search_field').clickElement().type('San Francisco, CA')
}
});
});