Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.11.03;
Скачать: [xml.tar.bz2];

Вниз

Не могу получить свойство Name элемента вебстраницы   Найти похожие ветки 

 
TSas   (2013-02-02 19:05) [0]

СВойство ID получаю легко, таким образом:
Var
 html_elements: OleVariant;

..............
for i := 0 to html_elements.length - 1 do
S := html_elements.Item(i).Id;
Но если написать
S := html_elements.Item(i).Name; то возникает ошибка "Свойство Name
не поддерживается сервером автоматизации".
Как с этим бороться? Пробовал тупо парсить, получая outerHTML, Name получал, но вот по Name обращаться к элементам форм всё равно не получается.


 
Dimka Maslov ©   (2013-02-02 19:46) [1]

Значит нет такого свойства в том варианте парсера, который используется.


 
TSas   (2013-02-02 20:48) [2]

Да папрсил-то я с горя. ID-то, я написал, как получал. НАверно, зависит от браузера.


 
знайка   (2013-02-02 23:55) [3]

При чем тут браузер?


 
TSas   (2013-02-03 19:07) [4]

Если не браузер, то что? Получем одно свойство Id получить можно, а полностью аналогичное ему свойство Name получить нельзя.
Более того, при обращении к элементам по Id всё работает, а по Name - косяк?
Name, как уже писал, с горя парсил из outerHTML элемента страницы. Получал, конечно, верное значение, но при обращении через Name - косяк.
Ради эксперимента пробовал писать страницку, и на JavaScript, скрипты которой содержались в этой страничке, обращаться к элементам странички можно было и по id и по Name. Почему так?


 
levko.ne@gmail.com   (2013-02-03 20:33) [5]

Попробуйте вместо получения свойства Name вызвать метод getAttribute("name")


 
знайка   (2013-02-03 23:37) [6]


> Если не браузер, то что?
То, что объектная модель страницы не имеет такого свойства (Name) для элемента.

> на JavaScript, скрипты которой содержались в этой страничке,
>  обращаться к элементам странички можно было и по id и по
> Name. Почему так?
ерунда какая-то. :)


 
TSas   (2013-02-04 12:57) [7]

>  обращаться к элементам странички можно было и по id и по
> Name. Почему так?
ерунда какая-то. :)
Могу страницу вывесить, если не верите.
Вообще-то, когда-то давно, я читал, что Name - это уставревшее обозначение, надо писать Id, а ещё лучше писать оба атрибута. Так в книжке советовали. Вот на браузер и грушу, он довольно новый, точно новее той книжки.


 
знайка   (2013-02-04 13:00) [8]

Да просто код скрипта показать и разметку страницы с элементами, не надо тут странички...


 
TSas   (2013-02-04 13:07) [9]

S := html_elements.Item(i).getAttribute("Name"); //Could not convert variant type "nil" into type "string"


 
Cobalt ©   (2013-02-04 15:42) [10]

TSas
Скажи-ка, мил человек, ты что за код используешь?
Какие интерфейсы?

Выложи ка этот интерфейс, и мы с тобой вместе поищем там этот "Name"


 
TSas   (2013-02-05 20:06) [11]

Var
 X: TElementData;
 html_elements: OleVariant;
 i: Integer;
 S, S1, S2: String;
begin
 ElementList.Clear;
 ElementList.URL := URL;
 html_elements := BrowserForm.WebBrowser1.OleObject.Document.all;
 for i := 0 to html_elements.length - 1 do
   Begin
   X.Element := peUnknowen; //Чтобы херня не пролезла
   S := html_elements.Item(i).TagName;

   If StringsAreEqual(S, BUTTON) then
     Begin
     X.Element := peButton;
     S1 := html_elements.Item(i).Type;
     if StringsAreEqual(S1, SUBMIT) then
       Begin
       S2 := html_elements.Item(i).innerText;
       ElementList.SubmitList.AddObject(S2, TObject(peButton));
       End;
     End;

   If StringsAreEqual(S, INPUT) then
     Begin
     X.Element := peButton;
     S1 := html_elements.Item(i).Type;
     If StringsAreEqual(S1, "Image") then
       Begin
       S1 := html_elements.Item(i).Value;
       If IsEmptyStr(S1) then continue;
       X.Element := peSubmit;
       ElementList.SubmitList.AddObject(S1, TOBject(peSubmit));
       End;
     End;

   S := html_elements.Item(i).Id;
   If S = EmptyStr then continue;
   If ElementList.AlreadyHasId(S) then continue;
   X.Id := S;
   S := html_elements.Item(i).TagName;
   X.TagName := S;

   If StringsAreEqual(S, INPUT) then //Это input
     Begin // - Да, input
     S1 := html_elements.Item(i).Type;
     If StringsAreEqual(S1, "Text") then X.Element := peText
     else if StringsAreEqual(S1, "") then X.Element := peText
     else if StringsAreEqual(S1,HIDDEN_INPUT) then X.Element := peHidded
     else if StringsAreEqual(S1, PASSWORD_INPUT) then X.Element := pePassword
     else if StringsAreEqual(S1, "File") then X.Element := peFile
     else if StringsAreEqual(S1, SUBMIT) then
       Begin
       X.Element := peSubmit;
       ElementList.SubmitList.AddObject(html_elements.Item(i).Value, TOBject(peSubmit));
       End
     else If StringsAreEqual(S1, "CheckBox") then X.Element := peCheckBox;
     If S1 <> EmptyStr then X.TagName := S + " type " + S1;
     End; //Если input

   If StringsAreEqual(S, "TextArea") then X.Element := peTextArea;
   If StringsAreEqual(S, "Select") then X.Element := peSelect;
   //Теперь варианты дивов
   If StringsAreEqual(S, "Div") then X.Element := peDiv;
   If StringsAreEqual(S, "P") then X.Element := peDiv;
   If StringsAreEqual(S, "H1") then X.Element := peDiv;
   If StringsAreEqual(S, "H2") then X.Element := peDiv;
   If StringsAreEqual(S, "H3") then X.Element := peDiv;
   If StringsAreEqual(S, "H4") then X.Element := peDiv;
   If StringsAreEqual(S, "A") then X.Element := peHref;

   If X.Element <> peUnknowen then //Нормальный элемент?
     ElementList.Add(X); //Добавил
   End; //of for
end;

Это готовит описание, чтобы потом можно было формы заполнять. Name здесь нет, т. к. у элементов странички они есть, притом от id отличаются, а вызывают косяки.
Вот, уже писал, как пробовал
S := html_elements.Item(i).getAttribute("Name"); //Could not convert variant type "nil" into type "string"

Добавлял проверку на nil и присвоение вначале варианту, а не строке, но лучше от этого не становилось.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.11.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
15-1368909003
Юрий
2013-05-19 00:30
2013.11.03
С днем рождения ! 19 мая 2013 воскресенье


2-1360298852
Andrey K
2013-02-08 08:47
2013.11.03
Вкладка Diagram


2-1360143133
Dmitry1987
2013-02-06 13:32
2013.11.03
проектирование иерархии классов


2-1360311329
Camaro
2013-02-08 12:15
2013.11.03
снизить цену на определенный %


15-1369142209
p
2013-05-21 17:16
2013.11.03
Помогите перевести





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский