【发布时间】:2016-10-03 16:38:34
【问题描述】:
在 VBA 中,我想知道是否可以在没有 Id 和 Name 属性的情况下单击此 HTML 按钮:
<ul aria-hidden="false" role="menu">
<li>
<button ..></button>
</li>
<li>
<button ..></button>
</li>
<li> <!-- THE THIRD li, I would like to access this button -->
<button title="exporter" role="menuitem" data-ng-disabled="myfunction()">my text</button>
</li>
</ul>
对于带有 Id 或 Name 的其他元素,我是这样做的:
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "site.com"
IE.document.getElementById("submitBtn").Click
// IE.document.getElementByName("submitBtn").Click
但在我之前的示例中,没有可用的“Id”或“Name”,只有按钮的 Title 属性,是否有可能访问此按钮?
有什么想法吗?
我尝试过的另一种方法,但也不起作用:
目标是点击按钮,所以我尝试直接执行“myfunction()”,像这样:
IE.document.parentWindow.execScript "myfunction()", "Javascript"
btu 我得到一个执行错误(错误 80020101).. 有什么想法吗?
【问题讨论】:
-
是的,您可以将其指定为具有 id 或名称的元素的第 n 个子元素 (childNodes[])。
-
如果 HTML 是有效的 XML,您还可以使用 XPath 根据属性、位置或兄弟选择节点/属性。
-
或 GetElementsByTagname 并遍历返回的集合,直到找到具有正确标题属性的集合。
-
谢谢,例如是否可以访问“myfunction()”所在的按钮,我的意思是,“myfunction”只在那里调用,所以有没有办法获取节点直接从那里?
-
只是提个醒(期待下一个问题)。该站点正在使用 AngularJS,因此如果
myfunction()是TRUE,则该按钮将被禁用且无法点击。我从未尝试通过 IE 自动化以编程方式更改 AngularJS 属性,所以我不能 100% 确定您是否可以设置data-ng-disabled=FALSE或者您是否必须强制对 myfction() 进行错误评估。
标签: javascript html vba excel automation