是否有可能在另一个元素之后获得一个元素? (不是子元素)
HTML code:
<input id="first-input" type="text"/>
<ul>
<li>1</li>
<li>2</li>
</ul>
<input id="second-input" type="text"/>
<ul>
<li>1</li>
<li>2</li>
</ul>
<input id="third-input" type="text"/>
<ul>
<li>1</li>
<li>2</li>
</ul>
如何在ul
之后获得element(by.id('second-input'))
?
以下是我的理解:
element(by.id('second-input')).element(by.tagName('ul')) // This doesn't work because this looks for sub-elements in <input id="second-input">
element.all(by.tagName('ul')).first() // This doesn't work because it gets the 'ul' following <input id="first-input">
element(by.id('second-input')).element.all(by.tagName('ul')) // This doesn't work because this looks for all 'ul' elements as sub-elements of <input id="second-input">
就我而言,这些人没有独特的ID,或者任何独特的东西。
答案 0 :(得分:9)
您可以使用by.xpath()
并要求跟随ul
兄弟:
element(by.id('second-input')).element(by.xpath('following-sibling::ul'));
或者,一气呵成:
element(by.xpath('//input[@id="second-input"]/following-sibling::ul'));
另一种选择是将by.css()
与adjacent sibling selector:
element(by.css('#second-input + ul'));
答案 1 :(得分:0)
使用Xpath选择器不是一个更好的选择,因为它会减慢元素查找机制的速度。
使用protractor-css-booster插件将非常简单。该插件将帮助您使用CSS选择器查找兄弟元素。
下载插件
npm install --save protractor-css-booster
在您的配置文件中添加插件:
exports.config = {
// ... the rest of your config
plugins: [
{
// The module name
package: "protractor-css-booster"
}
]
};
现在,您可以找到类似的元素
const ulElem=element(by.css('#second-input')).element(by.followingSibling('ul')); \\ returns the first div