我的DOM树中有多个元素,结构如下:

<span test-id="list"  id="rLGMqz">bla</span>


因为ID是由框架生成的,所以我定义了一些我在Selenium中搜索的测试ID。查找这些元素的xpath代码如下:

//*[@test-id='list']


这可行,但是selenium.getText(path)仅返回第一个span元素的内容。我现在想尝试这样的事情:

(//*[@test-id='list'])[2]


查找第二个元素,但硒抛出异常(未找到元素)。即使我只是将原始搜索词放在括号中(例如:(// * [@ test-id ='list'])),也会引发异常。我用firebug $ x()方法评估了该表达式,似乎一切都在那里工作,但是一旦我在Java中使用硒尝试相同的表达式,它就会崩溃。

最佳答案

好的,我终于找到了可行的解决方案。

Selenium在xpath表达式的开头需要一个“ /”。如果没有这样的东西(例如,在我的例子中有一个'('),则必须在xpath前面加上'“ xpath ='。

就我而言:

selenium.getText("xpath=(//*[@test-id='list'])[2]")

10-07 12:52
查看更多