8

我是 Selenium 的新手。下面是我的代码。

<input type="submit" id="button" value="Edit"/>

我有 3 个具有相同类型、id 和值的按钮。如何单击每个按钮?任何人都可以帮助我处理 XPath 吗?

4

7 回答 7

8

我通过以下方式解决了此类问题:

String cssSelectorOfSameElements="input[type='submit'][id='button']";

 List<WebElement> a=driver.findElements(By.cssSelector(cssSelectorOfSameElements)) ;
 a.get(0).click();
//a.get(1).click();
//a.get(2).click();

取决于您需要单击的按钮。希望这对你有用。

于 2012-10-30T09:29:41.293 回答
5

use index based xpath like //input[1] and //input[2] and so on.

于 2012-10-30T06:38:36.263 回答
2

还有一种更简单的方法,我们可以找出唯一的 xpath,或者我们可以生成

像 xpath=(//input[@id=' ndncchk '])[0] , xpath=(//input[@id='ndnnchk'])[1], xpath=(//input[@id= 'ndncchk'])[2]

或者我们可以找出绝对xpath的方式是:

到 firebug > open firebug > go to firepath > 会有一个小的下拉列表选择 Genarate absolute xpath :

它看起来像:

html/body/div[1]/form[1]/div[2]/div/div[2]/div[2]/div/div[3]/div[17]/div[2]/input[1]
html/body/div[1]/form[1]/div[2]/div/div[2]/div[2]/div/div[3]/div[17]/div[2]/input[2]...
于 2014-07-16T12:13:08.460 回答
2

识别独立元素 首先,发布您可以识别依赖元素的帖子。

例如,您在印度、美国、澳大利亚等国家/地区旁边有按钮。如果您想单击 USA 旁边的按钮,那么最好编写 xpath 来识别 USA 并在 html 树中后退一步并确定对每个人都 100% 有效的按钮。

于 2018-08-01T06:16:49.803 回答
0

试试//input[@id='button' and @value='Edit'][1]。一般来说,我喜欢查看父节点是什么,并且可能指定父节点,以便它们变得独一无二。

于 2012-12-20T19:02:53.227 回答
0

为了解决这个问题,有不同的方法

  1. 使用 index[], //input[1] //input[2] //input[3]

  2. 将 webelements 存储到列表中并使用索引访问

列出 buttonList=drive.findElements(By.id("button")); 按钮列表.get(0); 等等...

  1. 此外,在某些情况下,如果我们只需要访问特定元素,那么我们可以使用“Preceding-sibling”或“following-sibling”标签
于 2020-08-19T13:05:27.140 回答
0

当我尝试从 chrome 控制台定位多个组合框时,这个对我有用。

$x("//select[@class='form-control']")[1]

它给我返回了正确的组合框,下面有所有选项。

于 2017-08-06T17:38:36.250 回答