当前,我具有以下页面对象字段:
this.filterTeamDropdown = $("filter-item-edit .dropdown button");
this.teams = this.filterTeamDropdown.all(by.html" target="_blank">xpath("following-sibling::ul//li[contains(@class, 'dropdown-list-item')]"));
有没有办法替换该teams
字段的XPath定位器,而是使用CSS选择器?
其动机来自样式指南和建议不要使用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
我刚刚阅读了您的问题下方的一些评论,并看到您已经了解+
组合器。是否有某些原因无法将初始定位器CSS与XPath转换后的字符串一起使用?我不知道这是否有效/可用,但是在将XPath转换为CSS选择器之后,我将您在代码中提供的两个定位符组合在一起。
filter-item-edit .dropdown button + ul li.dropdown-list-item
例如与CSS选择器一起使用,但如何使用XPath表达式呢?
问题内容: 我在selenium测试中有以下xpath语句: 它达到了我想要的,但是我的测试在IE6中非常缓慢。有人知道我将如何做与CSS选择器相同的选择器吗?我想我了解如何执行上述操作,但text()=“ IPODate”部分除外。 以下是我要从中选择的表格示例: ....很多很多行 …还有很多行… 在此示例中,只有一行具有IPODate单元。 问题答案: CSS定位器用于其中包含文本IPODa
问题内容: 我只想自行选择一个名为.date的类 由于某种原因,我无法使它正常工作。如果有人知道我的代码出了什么问题,将不胜感激。 问题答案: 我想写这个问题的规范答案,因为上面的答案有问题。 我们的问题 该 CSS 选择器: 将选择具有 foo 类的任何元素。 您如何在XPath中做到这一点? 尽管XPath比CSS强大,但是 XPath没有CSS类选择器的本机等效项 。但是,有一个解决方案。
问题内容: 如何使用选择器在CSS中选择元素的上述元素 在这里,我想使用class ,以便可以使用CSS选择器获取上述元素。 问题答案: 纯CSS不可能做到这一点…
问题内容: 这是我目前拥有的代码: 我尝试了以下方法: 我正在使用selenium,我希望它单击ABZ之后的编辑按钮。 问题答案: 这个xpath使用您的html在Chrome中为我工作: 编辑 提升水平的手段。在从需要选择到。然后,找到匹配项的父项之后。 您原来的选择器匹配,然后寻找到。
我知道关于xpath有成千上万个简单的问题,但我不知道如何组合两个不太简单的表达式。。。 我的xml结构: 按类别选择 我知道通过在类后搜索可以选择div: 按文本选择 要选择我知道的span,我只需添加span,然后我想通过文本进行选择。对于该用例,我得到了xpath(这里的表单): 这些选择器都正常工作,但我想将它们结合起来 搜索类别“btn” 我试图这样想,但那不起作用测试示例: 即使有效,