т.е. getelementsbyID с тем же идентификатором - PullRequest
0 голосов
/ 10 октября 2018

У меня есть скрипт, который работает с Internet Explorder (то есть), и мне нужно зациклить поля выбора, чтобы он не был проблемой, но 4 элемента получили одинаковый идентификатор (на той же странице).

Как я могу позволить ему пройти через 4 поля?Могу ли я сделать их более пряными?

следующий код:

ie.document.getElementByID("DownloadImage").Click

Код ie следующий: поле 1

<a id="DownloadButton" href="javascript:__doPostBack('ctl00$ctl00$MainContent$MainContent$ctl00$declaratiebestandView$RetourInformatieGrid$ctl03$DownloadButton','')">CZ_Specificatie_150005697.pdf</a>

поле 2

<a id="DownloadButton" href="javascript:__doPostBack('ctl00$ctl00$MainContent$MainContent$ctl00$declaratiebestandView$RetourInformatieGrid$ctl03$DownloadButton','')">CZ_Specificatie_150005697.pdf</a><input name="ctl00$ctl00$MainContent$MainContent$ctl00$declaratiebestandView$RetourInformatieGrid$ctl03$DownloadImage" class="inlineButton" id="DownloadImage" type="image" src="../images/download.png" text="CZ_Specificatie_150005697.pdf">

, затем открывается экран загрузки, а затем мой код продолжает (и работает :))

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете зациклить их, используя querySelectorAll, чтобы собрать все элементы с атрибутом id, значения которого совпадают с тем, что вы ищете.Вы можете различить их по индексу.Этот метод позволит вам собрать их, даже если идентификаторы повторяются.Тем не менее, HTML-код, которым вы поделились, загружает тот же документ, поэтому цикл не кажется необходимым.

Dim nodeList As Object, i As Long
Set nodeList = ie.document.querySelectorAll("[id=DownloadButton]")
For i = 0 to nodeList.Length-1
    nodeList.item(i).Click
Next

Это зацикливает все соответствующие элементы и щелкает

По индексу будет конкретным, но если вы ознакомитесь с CSS-селекторами, у вас будет огромное количество возможностей для определения элемента.

0 голосов
/ 10 октября 2018

id в HTLM должно быть уникальным.Если он не уникален, он не является действительным HTML и должен быть исправлен.

HTML4:

http://www.w3.org/TR/html4/struct/global.html

Раздел 7.5.2:

id = name [CS] Этот атрибут присваивает имя элементу.Это имя должно быть уникальным в документе.

HTML5:

http://www.w3.org/TR/html5/dom.html#the-id-attribute

Атрибут id указывает уникальный идентификатор (ID) своего элемента.Значение должно быть уникальным среди всех идентификаторов в домашнем поддереве элемента и должно содержать хотя бы один символ.Значение не должно содержать пробелов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...