首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取给定字符串的xpath

如何获取给定字符串的xpath
EN

Stack Overflow用户
提问于 2015-08-29 05:48:30
回答 3查看 155关注 0票数 1

我正在尝试为给定的元素编写xpath。

代码语言:javascript
复制
<span editable-text="x.script" e-form="capture" class="ng-scope ng-binding editable">www.google.com</span>

我正在尝试像这样的东西

代码语言:javascript
复制
$x("//span[contains(concat(' ',@class,' '),' ng-scope ng-binding editable ')]")

这让我大错特错。

EN

回答 3

Stack Overflow用户

发布于 2015-08-29 08:53:31

既然你在娱乐CSS选择器,那么这些如何呢?所有这些都应该是有效的

代码语言:javascript
复制
driver.findElement(By.cssSelector("span[editable-text='x.script']"));
driver.findElement(By.cssSelector("span[e-form='capture']"));
driver.findElement(By.cssSelector("span.ng-scope.ng-binding.editable"));
票数 1
EN

Stack Overflow用户

发布于 2015-08-29 06:11:41

像这样怎么样?

代码语言:javascript
复制
//span[contains(@class, 'ng-scope') and contains(@class, 'ng-binding') and contains(@class, 'editable')]

或者简单地使用CSS选择器:

代码语言:javascript
复制
span.ng-scope.ng-binding.editable
票数 0
EN

Stack Overflow用户

发布于 2015-08-29 09:23:08

假设您正确地结束了contains()函数的括号,那么您的初始XPath应该可以用于发布span元素:

代码语言:javascript
复制
$x("//span[contains(concat(' ',@class,' '),' ng-scope ng-binding editable ')]")
                                                                           ^this was missing

然而,组合contains()concat()的诀窍(如this thread和其他一些地方提到的)意味着匹配单个CSS类。因此,将其应用于匹配3个CSS类的正确方法如下(为了可读性而进行格式化):

代码语言:javascript
复制
//span[contains(concat(' ',@class,' '),' ng-scope ')]
      [contains(concat(' ',@class,' '),' ng-binding ')]
      [contains(concat(' ',@class,' '),' editable ')]

否则,当类的顺序不同时,您的XPath将无法找到具有相同CSS类集合的span元素。无论如何,匹配CSS类对于XPath选择器来说不是一个自然的任务。如果可能的话,使用@Amey提到的CSS选择器是最终的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32280250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档