我的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]")