【问题标题】:How do I find the list of inner child tagnames using the object of Parent Tag如何使用父标记的对象查找内部子标记名列表
【发布时间】:2017-12-21 10:32:08
【问题描述】:

谁能帮助我使用父标记名的引用找出子标记名列表。

在表格中,我有行和列的列表,这意味着每行有 14 列,每列都有内部标签列表,如跨度、跨度、输入。现在我需要在 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());

在上面的代码中,我在shopviewtable idtagname tr 中为shopviewrowxpath //td[11] 传递表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,inputPFA 截图如何从列表中获取这些标签的名称[在此处输入图片描述]

尝试对每个项目使用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>

【问题讨论】:

  • 能否将问题区域内的相关HTML更新为Formatted Text

标签: java selenium html-table


【解决方案1】:

我假设您具有使用迭代查找单元格的机制,如图所示。现在尝试像这样使用 XPath 获取特定网格单元的所有子元素 -

List<WebElement> childElements =item.findElements(By.xpath(".//child::*"));
 //try even (".//*") as XPath to get the child elements

一旦你有了一个元素列表,你就可以使用 for 循环迭代来获取所需的标签或其他数据 getAttribute WebElement 的方法。

【讨论】:

  • 谢谢。但是如果我使用 .//child::* 它会返回超过 1000 个项目的所有子元素。在我的情况下,我只有一行 14 列。所以它应该停止一次它到达行尾和第 14 列。那是仪式吗/
  • 我如何获取子元素的项目,一旦它到达行尾和列尾应该停止。
  • @RajeshKumar 正如我所提到的,您需要使用 for 循环,即您用来选择特定单元格的方式,然后尝试获取该单元格的子元素而不是整个页面 cell.findElements(By.xpath(".//child::*")) 和那么你会有单元格的子元素
【解决方案2】:

请找到以下代码以获取单元格内每个元素的标签名称。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多