如何使用父标记的对象找到内部子标记名列表

时间:2017-12-21 10:32:09

标签: java selenium html-table

任何人都可以帮我看一下使用父标记名引用的子标记名列表。

在表格中,我有行和列的列表,这意味着每行有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]下方,我有三个tagnamespan,span,input PFA屏幕截图如何从列表中获取这些标记的名称[在此处输入图像说明]

对每个项目使用item.getTagname()进行了尝试,但它显示tdtagname,而不是td[11]内的元素名称。

如果有人能在这个问题上帮助我,那就太好了。

https://i.stack.imgur.com/jAG3k.png

这是我的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>

2 个答案:

答案 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();
                }
           }