Selenium 如何查找在页面上出现多次的类元素的XPath?

Selenium 如何查找在页面上出现多次的类元素的XPath?,selenium,xpath,browser,Selenium,Xpath,Browser,我试图让Selenium在一个类似reddit的网站上点击向上投票按钮。该网站有来自不同用户的条目,每个条目下面都有一个向上投票和向下投票按钮。我想做的是让Selenium单击第一个upvote按钮,它属于页面顶部的条目。 我尝试在Chrome中使用Copy XPath函数,但页面上的所有upvote按钮都返回相同的XPath: //*[@id="eksico-chevron-up-thick"]/path 如果需要,网站的外观如下所示: 那么,有没有办法找到第一个upvote按钮的XPath

我试图让Selenium在一个类似reddit的网站上点击向上投票按钮。该网站有来自不同用户的条目,每个条目下面都有一个向上投票和向下投票按钮。我想做的是让Selenium单击第一个upvote按钮,它属于页面顶部的条目。 我尝试在Chrome中使用Copy XPath函数,但页面上的所有upvote按钮都返回相同的XPath:

//*[@id="eksico-chevron-up-thick"]/path
如果需要,网站的外观如下所示:

那么,有没有办法找到第一个upvote按钮的XPath?我在想这样的事情:

//*[@id="eksico-chevron-up-thick"]/[1]
等等,先谢谢你

编辑:其中一个upvote元素的HTML代码:


如果你想点击第一个你可以使用的
驱动程序。通过\u xpath//*[@id=eksico chevron up thick]/path[1]查找\u元素。单击您尝试单击的元素位于html结构中提到的阴影dom下,并且当前selenium不支持对阴影dom下的元素进行操作。 参考:

因此,如果要单击元素,可以使用JavaScriptExecutor,如:


默认情况下,它将单击第一个元素本身,如果您想单击特定的第n个元素,则可以在列表中获取元素,然后将该元素的索引发送到方法中,以便单击该元素。

请添加您尝试添加的元素的htmlclick@SameerArora我以前从未听说过JavaScriptExecutor,非常感谢。
WebElement element = driver.findElement(By.id("eksico-chevron-up-thick"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);