Я пытаюсь перейти на другую вкладку, показанную в HTML-код ниже, из моей текущей вкладки в VBA.

<div title="0274 AP INVOICES SAP" data-bind="text: Name, attr: { title: Name }">0274 AP INVOICES SAP</div>

Я попробовал следующее:

ie.document.querySelector("[title*=AP INVOICES SAP].menu-row active-route").Click

но это дало мне ошибку «Method 'querySelector» объекта «JScriptTypeInfo» fail », и я также попробовал следующее:

ie.document.querySelector("div[data-bind*='0274 AP INVOICES SAP']").Click

но это дало мне ошибку «Требуется объект».

Что мне нужно сделать, чтобы правильно перейти на эту вкладку? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация

0
Su314

1 ответ

У вас есть половина ответа (по синтаксису) в каждой из ваших двух строк.

Тебе нужно

ie.document.querySelector("[title='0274 AP INVOICES SAP']").click

Предполагая, что ожидалось правильное ожидание загрузки страницы, и что эта комбинация заголовок = значение либо уникальна, и / или вы хотите первое; что он не динамический и что это правильная цель для события click.

Из-за пробелов в строке значения вам нужно использовать одинарные кавычки вокруг нее. Кроме того, после селектора атрибута вы не должны использовать селекторы класса, которые не являются частью целевого элемента.

Если вы продолжаете получать ошибку JScriptTypeInfo, которую я видел ранее со страницами, использующими knockoutjs, вам нужно либо прибегнуть к MS ScriptControl и намного большему количеству кода (в 32-битной системе) - что я не рекомендую или переключитесь на использование getElement (s) по методу, где эта проблема не должна возникать. В результате вы получаете массив, подобный объекту, который VBA вызывает JSCriptTypeInfo, и если вы его осмотрите, вы, скорее всего, увидите строку, обозначающую массив объектов (узлов), которые, как я подозреваю, происходят из вызова члена по умолчанию.

58526138