所以,我可能是最不喜欢用户的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的内容。
答案 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选项
Adobe 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
做任何你喜欢的事。