获得之前的内部HTML

时间:2015-03-24 10:45:44

标签: javascript automation crm imacros

所以,我可能是最不喜欢用户的CRM,我想用iMacros让我的生活更轻松。

然而,事情是如此复杂,以至于我无法轻松地获得一些价值的简单任务。

以下是页面上的内容:

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

我需要获得“Value”类的innerhtml,但是:b 1)页面上有很多值 2)每页都随机生成ID。

我发现我可以在第一个td中找到“Number:”文本,然后在那个之后获取td的innerhtml,但是我该怎么办?

我更喜欢使用javascript或其他可以轻松集成到iMacros的内容。

4 个答案:

答案 0 :(得分:1)

我将假设您无法以任何方式更改标记,因为这似乎隐含在您的问题中。

您可以从td按文档顺序获取所有querySelectorAll个元素的列表。当您找到包含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

答案 1 :(得分:1)

首先,您可以获取所有td元素并检查innerHTML的{​​{1}}并与您的“数字:”匹配。如果它是mached,那么获取下一个td值。

代码将是这样的:

td

答案 2 :(得分:0)

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

答案 3 :(得分:0)

非JavaScript选项

Adob​​e CQ5也喜欢随机生成ID。

我通常做的是用chrome打开相关页面,检查我要隔离的元素,并在检查工具中删除&#34; ID&#34;直到我删除了所有动态生成的元素作为相关元素的父元素。

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

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

在iMacros中,使用

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

做任何你喜欢的事。