【问题标题】:Getting inner HTML of a <td> after previous <td>在前一个 <td> 之后获取 <td> 的内部 HTML
【发布时间】:2015-03-24 10:45:44
【问题描述】:

所以,我在可能对用户最不友好的 CRM 中工作,我希望使用 iMacros 让我的生活更轻松一些。

但是,事情太复杂了,我无法轻松完成一项简单的任务来获得一些价值。

页面上的内容如下所示:

<td id="_t5141276" class="Label">Number:</td>
<td id="_t5141277" class="Value">1234567890</td>

我需要获取“Value”类的 innerhtml,但是:
1) 页面上有一堆值
2) 为每个页面随机生成 ID。

我发现我可以在第一个 td 中查找 "Number:" 文本,然后在那个之后获取 td 的 innerhtml,但是我该怎么做呢?

我希望它使用 javascript 或其他我可以轻松集成到 iMacros 中的东西。

【问题讨论】:

  • 你不能给td添加一个新类吗?喜欢&lt;td id="_t5141277" class="Value number"&gt;1234567890&lt;/td&gt;
  • 我不能:“...我在可能对用户最不友好的 CRM 中工作...”我无法更改页面上的任何内容。

标签: javascript automation crm imacros


【解决方案1】:

我假设您无法以任何方式更改标记,因为您的问题似乎暗示了这一点。

您可以从querySelectorAll 获取按文档顺序排列的所有td 元素的列表。当您找到其中包含Number: 的那个时,只需使用下一个即可:

var list = document.querySelectorAll("td"); // See note below
var index;
var value;
for (index = 0; index < list.length - 1; ++index) {
    if (list[index].innerHTML === "Number:") {
        value = list[index + 1].innerHTML;
        break;
    }
}

请注意,我已经允许 Number: 项目是最后一个(因此下一个,我们想要的,将丢失)通过停止最后一个项目的可能性。


注意:以上内容以正常方式在网页中执行。要在 iMacros 中执行此操作,显然您必须在 window.content 前面加上 document.querySelectorAll,所以第一行是:

var list = window.content.document.querySelectorAll("td");
//         ^^^^^^^^^^^^^^^------- added for iMacros

【讨论】:

    【解决方案2】:

    首先您可以获得所有td 元素并检查tdinnerHTML 并匹配您的“编号:”。如果它被加工然后得到下一个 td 值。

    代码将是这样的:

    var value = 0; 
    var tds = document.getElementsByTagName("td");
    for (var i=0; i< tds.length; i++)
    {
        var currentTd = tds[i];
        var value = currentTd.innerHTML.trim() // trim will remove extra spaces
        if(value === "Number:")
        {
            value = tds[i+1].innerHTML;
            break;
        }
    }
    

    【讨论】:

      【解决方案3】:

      感谢您的回答。我无法投票,因为我没有足够的代表,但所有建议都有效(包括经过一些调整后为 iMacros 删除的建议)。

      【讨论】:

        【解决方案4】:

        非 JavaScript 选项

        Adobe CQ5 也喜欢随机生成 ID。

        我通常做的是在 chrome 中打开相关页面,检查我想要隔离的元素,然后在检查工具中删除“ID”的值,直到我删除了所有动态生成的是相关元素的父元素。

        完成后,再次检查您的元素(您要避免刷新和删除所有辛苦的工作!)并右键单击 html 元素以复制 XPATH。

        这需要一些尝试和错误,并且经常需要我多次复制 XPATH 以找到偷偷摸摸的 ID。

        在 iMacros 中,使用

        TAG XPATH="[your XPATH goes here]" EXTRACT=TXT
        TAG XPATH="[your XPATH goes here]" CONTENT=whatever
        

        随心所欲。

        【讨论】:

          猜你喜欢
          • 2015-01-22
          • 2011-10-19
          • 1970-01-01
          • 2013-12-10
          • 2015-08-16
          • 1970-01-01
          • 1970-01-01
          • 2012-08-30
          • 1970-01-01
          相关资源
          最近更新 更多