【发布时间】:2023-03-28 16:53:01
【问题描述】:
使用量角器选择子元素的最佳方法是什么?假设我们有下面的布局......
<div id='parent_1'>
<div class='red'>Red</div>
<div class='blue'>Blue</div>
</div>
<div id='parent_2'>
<div class='red'>Red</div>
<div class='blue'>Blue</div>
</div>
使用 jQuery,我们会做这样的事情。
var p1 = $('#parent_1');
var p1_red = $('.red', p1); //or p1.find('.red');
var p1_blue = $('.blue', p1); //or p1.find('.blue');
但是对于 Protractor,首先获取父元素有意义吗?
因为这样做var p1 = element('#parent_1'); 直到getText() 或调用某些东西时才真正检索/搜索对象。
这样做..
场景 1
expect(p1.element('.red')).toBe('red');
expect(p1.element('.blue')).toBe('blue');
或
场景 2
expect(element('#parent_1').element('.red')).toBe('red');
expect(element('#parent_1').element('.blue')).toBe('blue');
或
场景 3
expect(element('#parent_1 > .red')).toBe('red');
expect(element('#parent_1 > .blue')).toBe('blue');
一种方法比另一种方法有什么好处吗?
这就是我正在做的,但我不知道将父级与 cssSelector 分开是否有任何优势:
function getChild(cssSelector, parentElement){
return parentElement.$(cssSelector);
}
var parent = $('#parent_1');
var child_red = getChild('.red', parent);
var child_blue = getChild('.blue', parent);
看着 Protractor 的 elementFinder 我可以这样做:
function getChild(cssSelector, parentCss){
return $(parentCss).$(cssSelector);
}
var child_red = getChild('.red', '#parent_1');
var child_blue = getChild('.blue', '#parent_1');
【问题讨论】:
标签: element parent-child protractor chaining