任何人都可以帮我看一下使用父标记名引用的子标记名列表。
在表格中,我有行和列的列表,这意味着每行有14列,每列都有内部标记列表,如span,span,input。现在我需要在列td[11]
下找到我已编写以下代码的项目列表:
element=driver.findElement(shopviewtableid);
items=element.findElements(shopviewrow);
if(items.size()>0) {
for(WebElement ele:items) {
columnvalues=ele.findElements(shopviewcolumn);
for(WebElement item:columnvalues) {
System.out.println("Inside Tag name of each column"+item..toString());
在上面的代码中,我正在id
中传递表shopviewtable id
,为tagname tr
传递shopviewrow
,为xpath //td[11]
传递shopviewcolumn
。现在,在再次为每一行获取td[11]
之后,我将获取td[11]
for(WebElement item:columnvalues) {
System.out.println("Inside Tag name of each column"+item..toString());" .
在td[11]
下方,我有三个tagname
项span,span,input
。 PFA屏幕截图如何从列表中获取这些标记的名称[在此处输入图像说明]
对每个项目使用item.getTagname()
进行了尝试,但它显示td
为tagname
,而不是td[11]
内的元素名称。
如果有人能在这个问题上帮助我,那就太好了。
这是我的Html结构:
<td role="gridcell" style="width: 11%;" class="jqnoDetails">
<span id="detailsForm:j_id_5q:0:minQuantity" class="hidden">1</span>
<span id="detailsForm:j_id_5q:0:incQuantity" class="hidden">1</span>
<span id="detailsForm:j_id_5q:0:originalQuantity" class="hidden">1.0000</span>
<input id="detailsForm:j_id_5q:0:quantity" name="detailsForm:j_id_5q:0:quantity" type="text" value="1" min="0" inc="1" onblur="PrimeFaces.bcn(this,event,[function(event){handleQuantityChanged(this); updatePrice($(this), 11.23);},function(event){jsf.ajax.request('detailsForm:j_id_5q:0:quantity',event,{execute:'@this ',render:'@this ','CLIENT_BEHAVIOR_RENDERING_MODE':'OBSTRUSIVE','javax.faces.behavior.event':'blur'})}])" style="width: 85%;" aria-required="true" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all jqQuantityInput textCenter" role="textbox" aria-disabled="false" aria-readonly="false">
</td>
答案 0 :(得分:1)
我假设您具有使用迭代查找单元格的机制,如图所示。现在尝试使用XPath获取特定网格单元的所有子元素 -
List<WebElement> childElements =item.findElements(By.xpath(".//child::*"));
//try even (".//*") as XPath to get the child elements
一旦有了元素列表,就可以使用for循环来迭代以获取所需的标记或WebElement的另一个数据getAttribute方法。
答案 1 :(得分:0)
请找到以下代码,以获取单元格内每个元素的标记名称。
element=driver.findElement(shopviewtableid);
items=element.findElements(shopviewrow);
if(items.size()>0) {
for(WebElement ele:items) {
columnvalues=ele.findElements(shopviewcolumn);
for(WebElement item:columnvalues) {
System.out.println("Inside Tag name of each column");
insideElements=item.findElements(By.xpath("//*");
for(WebElement ele:insideElements)
{
System.out.println("Inside Element tag:"+ ele.getTagName();
}
}