Перейти к содержимому

Фотография

silktest для новичков


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 151

#81 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 01 августа 2007 - 11:34

Вот никак не понимаю, как мне перебрать ВСЕ ссылки в окне?... да еще и отсеять их по критерию, ну хотябы чтобы он вернул все ссылки? Не подскажите, чтото из примера с гугл никак не выходит, там колумн, а в яндекси дивы... или это здесь не причем?
  • 0

#82 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 01 августа 2007 - 11:40

Вот никак не понимаю, как мне перебрать ВСЕ ссылки в окне?... да еще и отсеять их по критерию, ну хотябы чтобы он вернул все ссылки? Не подскажите, чтото из примера с гугл никак не выходит, там колумн, а в яндекси дивы... или это здесь не причем?

так, тока спрошу сам делаю, гет линксом я все схватил.... а какже мне теперь их рассортировать? отделить ответы от рекламных ссылок например?. естьли где описание стандартных функций?
  • 0

#83 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 01 августа 2007 - 12:25

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

Или же нужные ссылки являются дочерними элементами для некоторого окна. Ведь вполне возможно, что там есть окно, у которого только нужные ссылки являются дочерними (непосредственно). Соответственно их можно извлечь либо через GetChildren-метод данного окна, либо перебирая по индексу HtmlLink("#{iIndex}")
  • 0

#84 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 01 августа 2007 - 13:02

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

Или же нужные ссылки являются дочерними элементами для некоторого окна. Ведь вполне возможно, что там есть окно, у которого только нужные ссылки являются дочерними (непосредственно). Соответственно их можно извлечь либо через GetChildren-метод данного окна, либо перебирая по индексу HtmlLink("#{iIndex}")

Хм... интересно, а вот там так: все ссылки нужные находятся внутри дивов таким образом <div class="title"><a ....> тоесть нельзя ли както к этому признаку привязаться? тоесть достовать только ссылки которые висят в таком диве, и считается ли что этот див родитель ссылкам?
  • 0

#85 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 01 августа 2007 - 18:16

Похоже вы не там копаете. Все эти дивы - это структуры, которыми оперирует браузер. СилкТест же прекрасно справляется с сущностями другого вида - объектами, которые воспринимаются визуально и не очень. Для того, чтобы определить эти сущности вам надо сделать запись оконных деклараций для окна Яндекса. В частности окна, в котором ссылки на найденные страницы отображаются. Для этого в СилкТесте выберите меню Record > Window declarations, наведите на страницу (наводите на ее содержимое) и когда список заполнится записями, нажмите Ctrl + Alt , а затем на кнопку Copy to Clipboard. Все, диалог записи можно закрывать. Затем вставите текст из буфера обмена в файл с оконными декларациями. У меня ссылки на найденные страницы оказались внутри объекта HtmlList, что позволяет их замечательно локализовать. Дальнейшая задача сводится к фильтрации ссылок (нужно отсеять вспомагательные ссылки или сделать более удобный интерфейс для доступа к ним)
  • 0

#86 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 02 августа 2007 - 06:08

Огромнейшее спасибо, именно таким образом и пытался вчера сделать но толи силктест глючный, толи винда, но в вышеупомянутом окне записывалась только декларация самого этого окна( сейчас еще попробую. Да я тодее заметил что они в тэгах LI... здорово, а я чтото не подумал что HtmlList для этого используется.
  • 0

#87 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 02 августа 2007 - 08:50

СилкТест же прекрасно справляется с сущностями другого вида - объектами, которые воспринимаются визуально и не очень. Для того, чтобы определить эти сущности вам надо сделать запись оконных деклараций для окна Яндекса.

Но как же так? Ведь у Гугл объект HtmlColumn отвечает целиком за каждый блок найденной ссылке, потому через колумны к ним можно обратиться, а яндекс помещает свои ответы в <li>, но HtmlList отвечает как я понял за целый <OL>, тоесть как же я смогу обратиться к каждому ли отдельно.... и еще, каким образом после описания, например такого:
[-] HtmlList  HtmlList1
		[-] tag "#1"
		[-] HtmlLink  HtmlLink1
			[ ] tag "#1"
		[-] HtmlLink  HtmlLink2
			[ ] tag "#4"

тэги 1 и 4 так как по-счету нужная ссылка идет 4-ой после первой... но так бедет не всегда... Так есть ли способ описать универсально, да еще чтобы через объект ко всем 10 ссылкам окна можно было обратиться... в какую сторону копать-то?
  • 0

#88 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 02 августа 2007 - 10:51

В Гугле колонки выполняют схожую роль, что в данном случае выполняет список - это очередное звено в иерархии, которое локализует объекты.
Поскольку содержимое страницы результатов поиска динамическое, то тут нужно уметь собирать объекты на лету. Соответственно, подход вида:
[-] HtmlList  HtmlList1
		[-] tag "#1"
		[-] HtmlLink  HtmlLink1
			[ ] tag "#1"
		[-] HtmlLink  HtmlLink2
			[ ] tag "#4"
нам немного не подойдет. Более того, поскольку ссылки динамические, то нам их во фрейме объявлять необязательно. Вместо этого для HtmlList-а в данной оконной декларации можно дописать метод, который позволяет извлечь, например, текст ссылок на найденные страницы. Основной принцип, по которому надо фильтровать - непосредственно ссылки на страницы не имеют фиксированного текстового содержимого, соответственно, мы можем отбрасывать ссылки, содержащие некоторый фиксированный текст.
  • 0

#89 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 02 августа 2007 - 11:28

..., мы можем отбрасывать ссылки, содержащие некоторый фиксированный текст.

Хм... тоесть то слово по которому я ищу?:)
  • 0

#90 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 02 августа 2007 - 13:22

Нет, это слово даже не всегда может быть условием фильтра.
Кроме нужных ссылок есть еще ссылки "Сохраненная копия", "Еще с сайта", а также ссылки с предшествующим словом "Рубрика". Вот эти ссылки надо отсеять и в конечном остатке мы получим список именно ссылок на найденные страницы
  • 0

#91 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 02 августа 2007 - 13:22

Всетаки никак не могу сообразить как сделать следующие:
У меня есть окно со ссылками:
window BrowserChild Яndex
tag "Яndex|Яндекс: *"
и есть там ссылки обявленные так(или это лишнее):
[-] HtmlList  HtmlList1
		[-] multitag "#1"
			[ ] "@(438,62)"
		[-] HtmlLink  HtmlLink1
			[ ] tag "*"
в тесткейсе я делаю следующее:
[ ] LIST OF ANYTYPE r
	[ ] r=Яndex.GetLinks()
так как мне теперь достать из документа текст ссылки у который хрев равен r[2]? Это же должно как то выполнять? Блин, я никак немогу понять принцпа по которому силк тест описывает окно:( ведь поидеи из этого брозерчилда мне должны быть доступны все объекты в окне, но они не доступны.. покрайне1 мере мне:) подскажите, никак не могу сообразить(
  • 0

#92 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 02 августа 2007 - 13:29

Нет, это слово даже не всегда может быть условием фильтра.
Кроме нужных ссылок есть еще ссылки "Сохраненная копия", "Еще с сайта", а также ссылки с предшествующим словом "Рубрика". Вот эти ссылки надо отсеять и в конечном остатке мы получим список именно ссылок на найденные страницы

Именно, так и собираюсь сделать, но причина покоторой не могу выше... кстати, а отсеивание в тесткейсе или во фрейме осуществлять?
  • 0

#93 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 02 августа 2007 - 13:31

Всетаки никак не могу сообразить как сделать следующие:
У меня есть окно со ссылками:

window BrowserChild Яndex
tag "Яndex|Яндекс: *"
и есть там ссылки обявленные так(или это лишнее):
[-] HtmlList  HtmlList1
		[-] multitag "#1"
			[ ] "@(438,62)"
		[-] HtmlLink  HtmlLink1
			[ ] tag "*"
в тесткейсе я делаю следующее:
[ ] LIST OF ANYTYPE r
	[ ] r=Яndex.GetLinks()
так как мне теперь достать из документа текст ссылки у который хрев равен r[2]? Это же должно как то выполнять? Блин, я никак немогу понять принцпа по которому силк тест описывает окно:( ведь поидеи из этого брозерчилда мне должны быть доступны все объекты в окне, но они не доступны.. покрайне1 мере мне:) подскажите, никак не могу сообразить(


Возьмем вот эту декларацию:
   [+] window BrowserChild wYandex 	
	[ ] tag "Яндекс*"
			   ...........
	[-] HtmlList  HtmlList1
		[-] multitag "#1"
			[ ] "@(438,62)"
		[-] HtmlLink  HtmlLink1
			[ ] tag "*"
А ссылки извлечем вот так:
[ ] LIST OF WINDOW lwLinks = wYandex.HtmlList1.GetChildren()
После этого можно удалить все объекты не HtmlLink. Это можно сделать примерно так

[ ] INTEGER i
[+] for ( i = 1; i < ListCount( lwLinks ); i++  )
		   [+] if( ClassOf(lwLinks[i]) != HtmlLink  )
					  [ ] ListDelete( lwLinks , i )
					  [ ] i--
В результате останутся только ссылки
  • 0

#94 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 02 августа 2007 - 13:38

так как мне теперь достать из документа текст ссылки у который хрев равен r[2]
А это сделать не реально?
Поел пробовать вышеописаные действия
2 KaNoN, наиогромнейшееспасибо! извените что отнимаю у вас столько времени)
  • 0

#95 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 02 августа 2007 - 13:42

Нет, это слово даже не всегда может быть условием фильтра.
Кроме нужных ссылок есть еще ссылки "Сохраненная копия", "Еще с сайта", а также ссылки с предшествующим словом "Рубрика". Вот эти ссылки надо отсеять и в конечном остатке мы получим список именно ссылок на найденные страницы

Именно, так и собираюсь сделать, но причина покоторой не могу выше... кстати, а отсеивание в тесткейсе или во фрейме осуществлять?

Я изначально говорил про реализацию метода, который бы извлек все ссылки. И выше я привел механизмы, как это сделать, хотя можно и проще сделать. Например,
[+] window BrowserChild wYandex	 
	[ ] tag "Яндекс*"
			   ...........
	[-] HtmlList  HtmlList1
			[ ] tag "#1"
			[ ]
			[+] LIST OF WINDOW GetLinks()
					   [ ] LIST OF WINDOW lwWins = {}
					   [ ] INTEGER i = 1
					   [ ]
					   [+] while( this.HtmlLink("#{i}").Exists() )
									 [ ] ListAppend( lwWins , this.HtmlLink("#{i}") )
В результате в тесткейсе мы можем получить список всех ссылок вызовом:
wYandex.HtmlList1.GetLinks()
В метод GetLinks можно добавить код по отсеиванию ненужных ссылок, чтобы в результате получить только ссылки на найденные страницы
  • 0

#96 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 02 августа 2007 - 14:17

Ура! Заработал! Супер спасибо огромное!!!
Но есть два вопроса:)
1. Почему так медленно? 2,5 минуты тратит на сортировку... хотя прав ли я: он дольше тратит на вызов GetText чем просто еслибы я обратился к .text? или так нет такого свойства?
2. Какже мне избавиться от рубрики.. которая всегда разная, или ее нет вовсе, но я точно знаю что перед ней всегда есть текст "рубрика:" может както через тег и запись ^ попробовать?...
  • 0

#97 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 02 августа 2007 - 14:23

Ура! Заработал! Супер спасибо огромное!!!
Но есть два вопроса:)
1. Почему так медленно? 2,5 минуты тратит на сортировку... хотя прав ли я: он дольше тратит на вызов GetText чем просто еслибы я обратился к .text? или так нет такого свойства?

GetText много времени не занимает. И так, для справки, его аналогом является свойство sValue (а не text, как вы предположили). Много времени занимает именно выбор всех ссылок. Дополнительные фильтры уже дают нагрузку поменьше, хотя она тоже сказывается.

2. Какже мне избавиться от рубрики.. которая всегда разная, или ее нет вовсе, но я точно знаю что перед ней всегда есть текст "рубрика:" может както через тег и запись ^ попробовать?...

Попробуйте через предыдущий текст. У каждого контрола есть метод GetPriorStatic, который возвращает предшествующий текст. То есть ссылки, у которых предшествующий текст "Рубрика", отсеиваются
  • 0

#98 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 02 августа 2007 - 14:28

а так вот не выходит:(
[-] while( this.HtmlLink("#{i}").Exists() )
				[-] if(this.HtmlLink("#{i}").GetText()!="Сохраненная копия")
					[-] if(this.HtmlLink("#{i}").GetText()!="Еще с сайта")
						[-] if(this.HtmlLink("^Рубрика:")!=this.HtmlLink("#{i}"))
							[ ] ListAppend( lwWins , this.HtmlLink("#{i}") )
				[ ] i++
				[ ] print(this.HtmlList1.HtmlLink("^Рубрика:").GetText())
пишет
*** Error: Window '[HtmlLink]^Рубрика:' was not found
  • 0

#99 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 02 августа 2007 - 14:33

Вместо
[-] if(this.HtmlLink("^Рубрика:")!=this.HtmlLink("#{i}"))

попробуйте

if( this.HtmlLink("#{i}").GetPriorStatic() != "Рубрика:" )

Возможно это поубавит проблем
  • 0

#100 Evgenij_Ul

Evgenij_Ul

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Чирочкин Евгений
  • Город:Ульяновск

Отправлено 03 августа 2007 - 08:23

Снова я. Всю голову сломал.
Ответ выглядит так:
(pdf) ... и нечто жесткоеD нечто для него грубоеD превращает в чистый сокD так как хорошие ...
vstrecha-mpda.ru/temp/akatergastos.pdf · 240 КБ
Сохраненная копия · Рубрика: Христианство
Я пишу следующий код

[-] while( this.HtmlLink("#{i}").Exists() )
				[-] if(this.HtmlLink("#{i}").GetText()!="Сохраненная копия")
					[-] if(this.HtmlLink("#{i}").GetText()!="Еще с сайта")
						[-] if ( this.HtmlLink("#{i}").GetPriorStatic()!="Рубрика:" )
							[ ] print("приор: "+this.HtmlLink("#{i}").GetPriorStatic()+" Ссылка: "+this.HtmlLink("#{i}").GetText())
							[ ] 
							[ ] ListAppend( lwWins , this.HtmlLink("#{i}") )
Но скрипт говорит так:
[ ] приор: (pdf) Ссылка: ... и нечто жесткоеD нечто для него грубоеD превращает в чистый сокD так как хорошие ...
	[ ] приор: vstrecha-mpda.ru/temp/akatergastos.pdf  · 240 КБ Ссылка: Христианство
Так какже до этой рубрик дбраться? или она на какойто другой глубине находится?
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных