iMacros 标记行属性
iMacros Tag Line properties
我正在尝试创建一个宏来登录公司拥有的网页。当我记录将光标放入用户名文本框时,记录如下命令:
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/pdp/qnyfy/resumeSAML50/pdp/startSSO.ping
问题是标记行的 "qnyfy" 部分发生了变化。下次我尝试记录此标记行时,除了 "qnyfy" 更改为其他内容外,一切都一样;这使我的 VBA 代码无法登录此网页。
有没有办法先提取这些信息,找出这 5 个字符应该是什么,然后重新构建一个字符串以使用正确的标记行?
Windows 7
Excel 2016
iMacros 10.3
感谢帮助.......
好的,@OP 在 iMacros 论坛 (iMacros Tag Line Properties) 上打开了一些并行线程,这让我可以稍微简化这个答案并删除一些原始的 IF-IF-IF...
(并行线程包含更多(背景)信息和更精确的 Sols/Scripts 适用于此特定脚本,对于那些感兴趣的人...)
首先,FCI (Full Config Info) 原来不是很清楚,现在是:
=> iMB v10.3, 'Scripting Interface' v10.3, Win7.
("iMacros v10.3" 可能意味着“v10.3 for CR 'Free'/'PE'”也...)
('TAG'语句被截断的是这个线程,它是完整的+并行线程中的完整脚本...)
几个解决方案,我将从 "simplest" 到 "more complex":
1- 'FORM' 参数可能可以完全删除。通常不需要,除非页面上有多个具有相似 HTML 元素的表单,这里是 'INPUT' 字段。
2- 与“1”相同,但使用例如 'CLASS' 属性或任何可能唯一标识此 'INPUT' 字段的属性(如果页面上有多个表单)相似(但不相同)'INPUT' 个字段。 (或者如果它们相同则调整 'POS=n'...)
3- 与 '1' 或 '2' 相同,但与 'Relative Positioning' 结合,在某些 HTML 元素上可以识别 "easily" 并唯一用作锚点,在 ('3a') 内相同的 'FORM' 或 'DIV'(=> 这个 'INPUT' 旁边可能有一些 'Label' 就像一些 "Login:"例如),或者就在外面('3b'),如果该表单有一些 Name/Title 对应 "Section",通常在 'H2' 或 'H3' 类型中。
4- 只需将动态部分 ("qnyfy") 替换为通配符即可:
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/pdp/*/resumeSAML50/pdp/startSSO.ping
Sols [1-4] 可能提供了一个 "Shortcut" 来实现预期的结果,但他们实际上并没有真正回答@OP 的 Qt,即“如何 identify/extract/isolate 这个 "qnyfy" 5 个字母字符串...?"
5- 使用 [1-4] 方法中的第一个,设法标记将在 'FORM' 内的某些元素,或者 'INPUT' 字段本身或可以使用的一个元素作为'3a'中的锚点(在表单内有锚点),然后使用'Double Relative Positioning'(更多信息在iMacros论坛上我已经多次完全解释了原则)来识别和标记并提取(= HTM ) 完整的“包含 'DIV'”(或者可能是 'SPAN',但很可能会有一些(外部)'DIV' 也包含 'FORM',然后隔离 "qnyfy" 部分使用 'EVAL',stg 类似...:
SET !EXTRACT_TEST_POPUP NO
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/pdp/*/resumeSAML50/pdp/startSSO.ping ATTR=CLASS:* EXTRACT=TXT
TAG POS=R-1 TYPE=DIV ATTR=TXT:* EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=TXT:*&&CLASS:* EXTRACT=HTM
SET Form_ID EVAL("var s='{{!EXTRACT}}'; var x,y,z; x=s.split('ACTION:/pdp/'); y=x[1].split('/'); z=y[0]; z;")
PROMPT EXTRACT:<BR><BR>{{!EXTRACT}}<BR><BR>Form_ID:<SP>_{{Form_ID}}_
6-这个实际上介于'4'和'5'之间,它将通过使用'3b'首先定位'FORM'之外的一些锚点及其“包含 'DIV'”,那么只需要 'Relative Positioning' 的一个级别...(并且 'EVAL()' 语句保持不变...)
就是这样...!如果包含 'DIV' 的 Class 可以是 identified/added.
,这将有助于/添加一些 "Reliability"
不再与 iMB v10.3 相关:
如果 "iMacros v10.3" 表示 "iMacros for CR v10.3 'Free'",则需要使用 ['!VAR1'-'!VAR3'] 而不是 'Form_ID',因为 [=74] 不支持用户定义的变量=]版本...
[所有 Solutions/Scripts 当然没有测试...!嗯,我之前说直接可以想到3、4个Solutions,这里已经是6个了,啊啊啊……!,而且这6个上面还有不同的可能Variant……]
7-在iMacros论坛的并行线程中,我也提到并解释了一个Sol_7使用'EVENT'模式有或没有ID,这对这个没有用用户作为 'EVENT' 模式在 iMB v10.3 中不受支持。
路径:
Sol_5 和 Sol_6 实际上可以用来处理动态 ID,相同的原理...!
>
我可能有一天不得不删除这个答案,因为我目前每次(重新)使用我的最后 5/5 'Answer_Credit',我每次都必须删除一些以前的答案,以便能够 post 第 5 个,因为 'iMacros' Tag-Channel 上的大多数用户通常从不跟进他们的主题并且不做“+1”或 "Accept Solution"...,以及我所有的以前的答案通常也会被一些 "angry" 用户否决,所以我从来没有设法通过超过 5 个答案的门槛,啊-啊...!,tja...!
(可能没什么大不了的,因为我实际上从来没有或很少回答 SOF 上的线程,因为我不喜欢 Rep-Pts 系统,我只回答了这个,因为@OP 是我从iMacros 论坛啊啊啊...!)
(我仍然不知道下面的 'community wiki' CB 是什么意思 post 正在回答...?)
我正在尝试创建一个宏来登录公司拥有的网页。当我记录将光标放入用户名文本框时,记录如下命令:
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/pdp/qnyfy/resumeSAML50/pdp/startSSO.ping
问题是标记行的 "qnyfy" 部分发生了变化。下次我尝试记录此标记行时,除了 "qnyfy" 更改为其他内容外,一切都一样;这使我的 VBA 代码无法登录此网页。
有没有办法先提取这些信息,找出这 5 个字符应该是什么,然后重新构建一个字符串以使用正确的标记行?
Windows 7 Excel 2016 iMacros 10.3
感谢帮助.......
好的,@OP 在 iMacros 论坛 (iMacros Tag Line Properties) 上打开了一些并行线程,这让我可以稍微简化这个答案并删除一些原始的 IF-IF-IF... (并行线程包含更多(背景)信息和更精确的 Sols/Scripts 适用于此特定脚本,对于那些感兴趣的人...)
首先,FCI (Full Config Info) 原来不是很清楚,现在是:
=> iMB v10.3, 'Scripting Interface' v10.3, Win7.
("iMacros v10.3" 可能意味着“v10.3 for CR 'Free'/'PE'”也...)
('TAG'语句被截断的是这个线程,它是完整的+并行线程中的完整脚本...)
几个解决方案,我将从 "simplest" 到 "more complex":
1- 'FORM' 参数可能可以完全删除。通常不需要,除非页面上有多个具有相似 HTML 元素的表单,这里是 'INPUT' 字段。
2- 与“1”相同,但使用例如 'CLASS' 属性或任何可能唯一标识此 'INPUT' 字段的属性(如果页面上有多个表单)相似(但不相同)'INPUT' 个字段。 (或者如果它们相同则调整 'POS=n'...)
3- 与 '1' 或 '2' 相同,但与 'Relative Positioning' 结合,在某些 HTML 元素上可以识别 "easily" 并唯一用作锚点,在 ('3a') 内相同的 'FORM' 或 'DIV'(=> 这个 'INPUT' 旁边可能有一些 'Label' 就像一些 "Login:"例如),或者就在外面('3b'),如果该表单有一些 Name/Title 对应 "Section",通常在 'H2' 或 'H3' 类型中。
4- 只需将动态部分 ("qnyfy") 替换为通配符即可:
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/pdp/*/resumeSAML50/pdp/startSSO.ping
Sols [1-4] 可能提供了一个 "Shortcut" 来实现预期的结果,但他们实际上并没有真正回答@OP 的 Qt,即“如何 identify/extract/isolate 这个 "qnyfy" 5 个字母字符串...?"
5- 使用 [1-4] 方法中的第一个,设法标记将在 'FORM' 内的某些元素,或者 'INPUT' 字段本身或可以使用的一个元素作为'3a'中的锚点(在表单内有锚点),然后使用'Double Relative Positioning'(更多信息在iMacros论坛上我已经多次完全解释了原则)来识别和标记并提取(= HTM ) 完整的“包含 'DIV'”(或者可能是 'SPAN',但很可能会有一些(外部)'DIV' 也包含 'FORM',然后隔离 "qnyfy" 部分使用 'EVAL',stg 类似...:
SET !EXTRACT_TEST_POPUP NO
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/pdp/*/resumeSAML50/pdp/startSSO.ping ATTR=CLASS:* EXTRACT=TXT
TAG POS=R-1 TYPE=DIV ATTR=TXT:* EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=TXT:*&&CLASS:* EXTRACT=HTM
SET Form_ID EVAL("var s='{{!EXTRACT}}'; var x,y,z; x=s.split('ACTION:/pdp/'); y=x[1].split('/'); z=y[0]; z;")
PROMPT EXTRACT:<BR><BR>{{!EXTRACT}}<BR><BR>Form_ID:<SP>_{{Form_ID}}_
6-这个实际上介于'4'和'5'之间,它将通过使用'3b'首先定位'FORM'之外的一些锚点及其“包含 'DIV'”,那么只需要 'Relative Positioning' 的一个级别...(并且 'EVAL()' 语句保持不变...)
就是这样...!如果包含 'DIV' 的 Class 可以是 identified/added.
,这将有助于/添加一些 "Reliability"不再与 iMB v10.3 相关:
如果 "iMacros v10.3" 表示 "iMacros for CR v10.3 'Free'",则需要使用 ['!VAR1'-'!VAR3'] 而不是 'Form_ID',因为 [=74] 不支持用户定义的变量=]版本...
[所有 Solutions/Scripts 当然没有测试...!嗯,我之前说直接可以想到3、4个Solutions,这里已经是6个了,啊啊啊……!,而且这6个上面还有不同的可能Variant……]
7-在iMacros论坛的并行线程中,我也提到并解释了一个Sol_7使用'EVENT'模式有或没有ID,这对这个没有用用户作为 'EVENT' 模式在 iMB v10.3 中不受支持。
路径:
Sol_5 和 Sol_6 实际上可以用来处理动态 ID,相同的原理...!
>
我可能有一天不得不删除这个答案,因为我目前每次(重新)使用我的最后 5/5 'Answer_Credit',我每次都必须删除一些以前的答案,以便能够 post 第 5 个,因为 'iMacros' Tag-Channel 上的大多数用户通常从不跟进他们的主题并且不做“+1”或 "Accept Solution"...,以及我所有的以前的答案通常也会被一些 "angry" 用户否决,所以我从来没有设法通过超过 5 个答案的门槛,啊-啊...!,tja...!
(可能没什么大不了的,因为我实际上从来没有或很少回答 SOF 上的线程,因为我不喜欢 Rep-Pts 系统,我只回答了这个,因为@OP 是我从iMacros 论坛啊啊啊...!)
(我仍然不知道下面的 'community wiki' CB 是什么意思 post 正在回答...?)