WebDriver找到一个特定的子元素

时间:2015-11-16 14:57:06

标签: java html selenium selenium-webdriver automated-tests

我有这样的HTML:



<div class="classDiv">
  <header>
    <button class="btn btn-icon-only btn-icon-only pull-right ng-scope" type="button">
	  <span class="btn-box">
	    <span class="sr-only">Edit</span>
		<span class="icon-btn icon-edit2" aria-hidden="true"></span>
	  </span>
    </button>
    <h3 class="classH3">Text1</h3>
  </header>
</div>
<div class="classDiv">
  <header>
    <button class="btn btn-icon-only btn-icon-only pull-right ng-scope" type="button">
	  <span class="btn-box">
	    <span class="sr-only">Edit</span>
		<span class="icon-btn icon-edit2" aria-hidden="true"></span>
	  </span>
    </button>
    <h3 class="classH3">Text2</h3>
  </header>
</div>
&#13;
&#13;
&#13;

问题是每个标签都是相同的,只有每个div的H3文本都不同。我只想单击一个特定的“编辑”按钮,例如第二个“编辑”按钮。

所以我试图找到第二个H3,然后从那里我试图找到第二个Edit按钮,如下所示:

WebElement hText = webDriver.findElement(By.xpath("//h3[contains(., 'Text2')]"));
WebElement editBtn = hText.findElement(By.xpath("//button[contains(., 'Edit')]"));
editBtn.click();

但它总是点击第一个“编辑”按钮。我想找到父元素,并从父元素中找到它的子元素。但在这种情况下,每个标签都是相同的,所以我不知道如何寻找一个特定的孩子。任何帮助非常感谢

2 个答案:

答案 0 :(得分:0)

如果我不记得坏(//按钮)[1]或(//按钮)[2],您可以根据他在返回的按钮列表中的位置选择按钮

答案 1 :(得分:0)

试试这个:

WebElement divWithH3 = webDriver.findElement(By.xpath("div[.//h3[contains(., 'Text2')]]"));
WebElement editBtn = divWithH3.findElement(By.xpath("//button[.//span[contains(text(), 'Edit')]]"));
editBtn.click();

首先找到包含“Text2”元素的div元素。在那里,您正在搜索button元素,其中包含span元素,其中包含文字“编辑”