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

Фотография

Слэш в названии линка (SilkTest)


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

#1 Nadin

Nadin

    Новый участник

  • Members
  • Pip
  • 70 сообщений
  • Город:Kiev, Ukraine

Отправлено 12 мая 2006 - 12:24

Привет!
Задача:
На странице есть куча линков, нужно определить, есть ли среди них, например, "my/link".
Page1.HtmlLink("my/link").Exists(2) выдаёт false, даже если линк есть на странице. Я вкурсе, что это из-за слэша. Вопрос в том, как это обойти.
Замена "/" на "?" не подходит, т. к. на странице могут быть и линки типа "my_link" и тогда получаем Error: Window '[HtmlLink]my?link' is not unique

Коллеги, есть какие-нибудь идеи? Пожскажите, плиз :help:
  • 0

#2 VegaX

VegaX

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

  • Members
  • PipPip
  • 85 сообщений

Отправлено 12 мая 2006 - 12:45

Прийдется написать маленький скриптец с использованием функции GetLocation для HtmlLink.

Как пример:
[ ] WINDOW wLink = NULL
	[ ] INTEGER iIndex = 1
	[+] while BrowserPage.HtmlLink("my?link[{iIndex}]").Exists()
  [+] if MatchStr("*my/link*", BrowserPage.HtmlLink("my?link[{iIndex}]").GetLocation())
 	 [ ] wLink = BrowserPage.HtmlLink("my?link[{iIndex}]")
 	 [ ] break
  [ ] iIndex++
	[ ] Print(wLink)

Там конечно нужно это все поменять под твой код. Это просто сама идея...
  • 0

#3 Nadin

Nadin

    Новый участник

  • Members
  • Pip
  • 70 сообщений
  • Город:Kiev, Ukraine

Отправлено 12 мая 2006 - 13:59

Ой, спасибо:) Оказывается, индексы в линках используются:) Я просто с СилкТестом пока на Вы. :help:
  • 0

#4 KaNoN

KaNoN

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

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

Отправлено 12 мая 2006 - 18:08

VegaX
Классный код :help: , но зачем все так усложнять? Если у строк есть специальные символы, то и найдутся символы, которые маскируют их. В СилкТесте для строк таким маскирующим символом является двойная кавычка ".
Nadin
Попробуй это, должно помочь.
А индексы используются во всех объектах как еще один уникальный идентификатор, если тэги одинаковы.
  • 0

#5 VegaX

VegaX

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

  • Members
  • PipPip
  • 85 сообщений

Отправлено 15 мая 2006 - 10:15

В СилкТесте для строк таким маскирующим символом является двойная кавычка ".


Есть такой символ. Только я не совсем понимаю как он может тут помочь. Можешь подкинешь пример кода (или тага) как можно его использовать?

Дело в том что конструкция типа:
BrowserPage.HtmlLink("my"/link").Exists()
не подойдет, так как СилкТестом не будет обнаружен конец строкового тега!
  • 0

#6 KaNoN

KaNoN

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

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

Отправлено 15 мая 2006 - 16:43

Интересная картина вырисовывается с этими специальными символами.
Символ " действительно является маскирующим символом, но его действие распространяется на символы " и { (то есть те символы, которые прерывают строку). А для специальных символов вида * , ? , / такая маскировка просто не работает.

В частности знаю, что для функции MatchStr, если нужно сравнивать строку содержащую * как символ, то для точного сравнения в шаблоне используется ** (то есть одна звездочка маскирует другую).

А для данной проблемы все-таки придется писать функцию, которая находит индекс объекта по его тексту. Приведенный ранее пример может подойти. Можно, конечно и обобщить.

А вообще тема интересная. Надо бы на других форумах поискать ответ на этот вопрос или убедиться, что ответа нет
  • 0

#7 VegaX

VegaX

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

  • Members
  • PipPip
  • 85 сообщений

Отправлено 15 мая 2006 - 16:52

Вот еще одна из интересных тем, которая может быть высвлетлена в книге :help:
  • 0

#8 KaNoN

KaNoN

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

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

Отправлено 15 мая 2006 - 17:45

Еще бы, извращений есть куча :help:
И данный вопрос обязательно будет рассмотрен. Главное, чтобы он не затерялся в куче рутинной информации
  • 0


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

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