我有以下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
的所有元素(不仅是子元素,还有孩子的孩子......)
谢谢!
答案 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");