selenium找到孩子的孩子元素

时间:2013-11-26 12:01:57

标签: xpath selenium element parent-child nested

我有以下html:

<form name="form1">
  <input name="a" ...>
  <input name="b" ...>
  ...
  <div><span><select name="c">...</select></span></div>
</form>

我想找出表单元素中的所有元素。首先,我使用findElement()获取表单元素form1,然后使用form1.findElements(By.xpath(".//*[@name]"))使其所有子元素具有属性name。但是,对于select元素,因为它是form1的盛大孩子,我怎么能得到它呢?

有没有办法在name内找到包含属性form1的所有元素(不仅是子元素,还有孩子的孩子......)

谢谢!

3 个答案:

答案 0 :(得分:3)

如果你想通过xpath获取一个WebElement,那么得到它的孩子......你可以使用webElement.findElement(By.xpath("./*")) ...这个&#34;。&#34;在&#34; /&#34;之前制造魔法,你只需要它来获得webElement的孩子......

答案 1 :(得分:0)

你必须找到表单元素吗?如果没有,那么你可以使用css或xpath在一个select语句中完成它。

css将是'form [name =“form1”] [name]'

请注意关闭和打开括号之间的空格。

您可以在驱动程序对象上使用此选择器和FindElement,而不是先找到表单。

答案 2 :(得分:-1)

您应该能够使用后代::如本文所述。

http://hedleyproctor.com/2011/05/tutorial-writing-xpath-selectors-for-selenium-tests/

以下是文章中的几个例子:

//div[h3/text()='Credit Card']/descendant::*
//div[h3/text()='Credit Card']/descendant::input[@id='cardNumber']
//div[*/text()='Credit Card']/descendant::input[@id='cardNumber']



  webDriver.findElement(
     By.xpath("//div[*/text()='Credit Card']/descendant::input[@id='cardNumber']")
  ).sendKeys("1234123412341234");