GetElementById без идентификатора и имени КАК? - PullRequest
1 голос
/ 09 ноября 2011

Мне нужно нажать кнопку «Добавить» в новой форме WordPress, эта кнопка предназначена для добавления тегов к сообщению, проблема в том, что у кнопки нет значения и свойства id. Просто так

HTML для кнопки

input type="button" class="button tagadd" value="Add" tabindex="3"

мои попытки

webBrowser1.Document.GetElementById("button tagadd").InvokeMember("click");

webBrowser1.Document.GetElementById("Add").InvokeMember("click");

Ответы [ 4 ]

4 голосов
/ 09 ноября 2011

«GetElementById без идентификатора»

:-)

Если вы не можете изменить разметку для кнопки

Теперь вам нужно пройти через весь DOM и найти кнопку в известном месте.Я бы посоветовал добавить jquery, если он еще не существует, чтобы облегчить манипулирование / поиск dom.

Если вы добавите jquery, вы можете сделать что-то вроде $(".tagadd").click()

1 голос
/ 09 ноября 2011

Вы можете попробовать сделать

webBrowser1.document.getElementsByClassName("tagadd")

РЕДАКТИРОВАТЬ: Вот скрипт для создания функции getElementsByClassName, если она недоступна http://robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/

Также есть это http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.getelementsbytagname.aspxно я никогда не использовал его.

0 голосов
/ 26 мая 2015

используйте TagName, например,

var elems = webBrowser1.Document.GetElementsByTagName("input");
        foreach (HtmlElement elem in elems)
        {
            if (elem.GetAttribute("class") == "button tagadd")
            {
                elem.InvokeMember("click");
            }
        }
0 голосов
/ 09 ноября 2011
  • Добавить идентификатор.Даже если вы динамически генерируете кнопки, это должно быть тривиально.

  • Если вы используете jQuery,

    $ ('. Tagadd')

вернет коллекцию всего с примененным классом tagadd.Вы можете дополнительно отфильтровать это по другим классам (button и т. Д.)

  • Используйте это:

    onload = function () {if (document.getElementsByClassName ==undefined) {document.getElementsByClassName = function (className) {var hasClassName = new RegExp ("(?: ^ | \ s)" + className + "(?: $ | \ s)");var allElements = document.getElementsByTagName ("*");var results = [];

        var element;
        for (var i = 0; (element = allElements[i]) != null; i++) {
            var elementClass = element.className;
            if (elementClass 
    

    && elementClass.indexOf (className)! = -1 && hasClassName.test (elementClass)) results.push (element);}

        return results;
    }
    

    }}

и еще один

  1. Некоторые браузеры предоставляют метод getElementsByClassName(), который позволяет выбиратьпо классу без использования jQuery (что немного тяжело, если это все, что вам нужно).Я не проверял это, поэтому я не уверен, насколько широко это поддерживается.

  2. Я упоминал, что вы должны дать всем идентификатор?

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