ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 在搜索兄弟姐妹时使用CSS选择器而不是XPath定位器

2019-05-27 22:29:40  阅读:226  来源: 互联网

标签:javascript css-selectors xpath selenium protractor


目前,我有以下页面对象字段:

this.filterTeamDropdown = $("filter-item-edit .dropdown button");
this.teams = this.filterTeamDropdown.all(by.xpath("following-sibling::ul//li[contains(@class, 'dropdown-list-item')]"));

有没有办法替换team字段的XPath定位器并改为使用CSS选择器?

其动机来自Style Guiderecommendation not to use XPaths.

根据我的理解,不可能有一个CSS选择器从上下文中的当前元素开始转到下一个兄弟.但是,还有其他选择吗?

解决方法:

从不对任何事情说傻.我非常喜欢CSS选择器,因为通过id,CSS选择器定位元素,几乎任何东西……都比XPath快.但是……与此同时,我们正在谈论几毫秒的差异.

XPath可以执行一些其他定位器方法无法做到的事情.想到的一个例子是通过包含的元素文本找到一个元素(除了A).除此之外,当ID不起作用时,我通常会坚持使用CSS选择器.

我非常不喜欢很多人在SO上的定位策略,因为XPath似乎是找到元素到达愚蠢点的转向方式.我见过人们只是寻找id并使用XPath.我认为部分原因是您可以轻松获得XPath,在检查器中右键单击元素并复制XPath并粘贴代码.我确定你知道的问题是,有时(很多次?)会导致非常脆弱的XPath,但有些/很多人不知道更好.

总而言之,我将指向W3C CSS Selector参考,也许你可以找到你想要的东西.那里有一些兄弟组合器,但是我没有你的HTML,所以我不知道它们中哪些可行.

https://www.w3.org/TR/selectors/#selectors

https://www.w3.org/TR/selectors/#adjacent-sibling-combinators

我刚看了你问题下面的一些评论,看到你已经知道了这个组合器.是否有一些原因你不能使用XPath转换后的字符串重用初始定位器CSS?我不知道这是否有效/可用,但我将XPath转换为CSS选择器后,将您在代码中提供的两个定位器组合在一起.

filter-item-edit .dropdown button + ul li.dropdown-list-item

标签:javascript,css-selectors,xpath,selenium,protractor
来源: https://codeday.me/bug/20190527/1166341.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有