Selenium webdriver 使用Css选择器定位第一个跨度元素(Selenium)

Selenium webdriver 使用Css选择器定位第一个跨度元素(Selenium),selenium-webdriver,css-selectors,Selenium Webdriver,Css Selectors,经过测试的应用程序已经更改,我发现自己处于一个棘手的境地。 鉴于以下代码部分: <span class="some some-locator"> <span>Some dummy text</span> <span>Some stacktrace text</span> </span> 一些虚拟文本 一些堆栈跟踪文本 我尝试了这个定位器:span.some.some定位器 问题是,它返回了两个跨度,但是我需

经过测试的应用程序已经更改,我发现自己处于一个棘手的境地。 鉴于以下代码部分:

<span class="some some-locator">
   <span>Some dummy text</span>
   <span>Some stacktrace text</span>
</span>

一些虚拟文本
一些堆栈跟踪文本
我尝试了这个定位器:
span.some.some定位器

问题是,它返回了两个跨度,但是我需要第一个跨度,“一些虚拟文本”。“一些stacktrace文本”对我来说不是必需的


提前谢谢

尝试使用:n子选择器

span.some.some-locator > span:first-of-type {
  // styles goes here...
}
对于您的情况,应该如下所示:

span.some.some-locator > span:nth-child(1)

尝试使用:n子选择器

对于您的情况,应该如下所示:

span.some.some-locator > span:nth-child(1)
试着跟下面说

//span[contains(text(),'Some dummy text')]
试着跟下面说

//span[contains(text(),'Some dummy text')]

我接受这个答案,因为它可以与selenium一起正确使用,作为文本处理很容易。但是其他的也很好。很抱歉,它在不同的时间不起作用,因为文本可能是相似的。如果文本每次都不同,并且是动态的,那么您也可以传递您正在寻找值的变量,比如wise,//span[contains(text(),“+variable name+”)]我接受这个答案,因为它可以正确地与selenium一起使用,作为文本处理很容易。但是其他的也很好。很抱歉,它在不同的时间不起作用,因为文本可以是相似的。如果文本每次都不同并且是动态的,那么您也可以传递要在其中查找值的变量,如wise、//span[包含(text(),“+变量名+”)]