量角器测试通过,但无法看到搜索字段填充
Protractor test passes but cant see search field populate
我的测试用例工作,但问题是我看不到我的任何键发送到我的搜索输入框类型的量角器当我的脚本运行。
1个规格,0个故障
以7.696秒完赛
[14:53:55]我/launcher - 0个WebDriver实例仍在运行
[14:53:55] I/launcher - chrome #01 passed
homho3031261: Homeshp jonathan.hofler $
如有任何帮助,不胜感激。
(HTML代码)
<input parse-search-query=""
type="text"
tabindex="1"
name="search_query"
autocomplete="off"
placeholder="Search by City ST, Zip, or Address"
data-ng-model="searchQueryFieldCtrl.searchFormController.searchParams.search_query"
data-ng-change="searchQueryFieldCtrl.searchFormController.clearErrors()"
data-focus-on="focusQuery || form.search_query.$error"
data-uib-typeahead="suggestion as suggestion.label for suggestion in searchQueryFieldCtrl.getSuggestions($viewValue)"
data-typeahead-focus-first="false"
data-typeahead-min-length="0"
data-typeahead-wait-ms="300"
data-typeahead-on-select="searchQueryFieldCtrl.setSearch($item)"
class="ng-pristine ng-untouched ng-valid ng-scope"
aria-autocomplete="list"
aria-expanded="false"
aria-owns="typeahead-69-869">
——conf.js
describe('New stack hompage test', function() {
it('should test home page title and search', function() {
browser.ignoreSynchronization = true;
browser.get('http://localhost:3000/');
browser.sleep(3000)
expect(browser.getCurrentUrl()).toEqual('http://localhost:3000/');
expect(browser.getTitle()).toEqual('Find Homes for Sale, Rent & Real Estate Listings Nationwide at Homes.com');
var search = element.all(by.css("input[name='.search_header.search_query']"));
search.sendKeys('Chesapeake VA'); // this is not working
browser.sleep(3000);
// search.sendKeys(protractor.Key.ENTER).preform(); // this is not working
// var searchT = element.all(by.css("input[name='.homepage_hero search_query']"));
// search.sendKeys('anything'); // this is not working
});
});
根据这个问题的标题,我假设您在问为什么即使搜索字段不存在/您无法看到测试发送键,测试也会通过。
你的测试通过了,因为你唯一的断言是基于Url和标题的:
expect(browser.getCurrentUrl()).toEqual('http://localhost:3000/');
expect(browser.getTitle()).toEqual('Find Homes for Sale, Rent & Real Estate Listings Nationwide at Homes.com');
您还需要对搜索输入进行测试。要检查输入文本,不要使用getText()
,而是使用getAttribute('value')
。你可以输入:
expect(search.getAttribute('value')).toEqual('Chesapeake VA');
就你的定位器而言,它看起来不正确,这可能就是它不发送密钥的原因。首先,由于您使用了.all
,因此创建了ElementArrayFinder
。其次,你不应该在search_header
之前有一个句号,因为这表明你正在寻找一个类。
试试这个:
var search = $('input[name="search_query"]');
$
是element(by.css())
的简写。如果您使用.all
是因为有多个元素,那么要么将.first()
添加到该定位符的末尾,要么使用.get(1)
(或其他索引):
var search = $$('input[name="search_query"]').get(2);
$$
是element.all(by.css())
最后,由于您正在使用browser.ignoreSynchronization = true
,我建议您开始使用预期条件。比如:
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(search)).then(function() {
search.sendKeys('Chesapeake VA');
});
expect(search.getAttribute('value')).toEqual('Chesapeake VA');
search
是类型ElementArrayFinder,它没有sendKeys
方法。您希望使用.then
等待承诺返回一个elementfinder数组,然后在那里使用sendKeys。检查文档:
ElementArrayFinder
sendKeys
- 引导工具提示用法,在搜索字段中
- JavaScript动态附加到搜索字段
- 当搜索字段为空时,取消所有ajax请求
- jQuery .focus() 在 Safari(桌面)的搜索字段中不起作用
- CasperJS无法填充谷歌搜索字段
- 如何使用 Jquery 向搜索字段添加“标签”
- 在表单中搜索字段,然后对所有选定的结果执行某些操作
- 修复融合表映射中不起作用的搜索字段和表
- 如何通过自动填充html列表为用户制作搜索字段
- 编写从 XML 文件返回数据的搜索字段脚本
- 如果搜索字段为空,则不要搜索(Wordpress)
- 将结果添加到自动建议的搜索字段
- 使用 AngularJS 中的搜索字段进行过滤
- 点击显示按钮并在关闭时隐藏搜索字段时出现问题
- 是否可以通过搜索字段使用“switch_user”
- 搜索字段,清除焦点上的默认文本-FF 3.6
- 搜索字段文本没有't在FF 3.6中显示
- 在Sencha touch中的搜索字段上设置列表值
- 堆栈溢出背后的算法是什么? ajax标记搜索字段
- 搜索字段sapui5显示json中的数据