Автор Тема: [Автоматизация] Клик по ссылке из элемента  (Прочитано 2172 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн iwak [?]

  • Новичок
  • *
  • Сообщений: 28
  • Репутация: 0
    • Награды
Здравствуйте. Пытаюсь разобраться, как кликнуть по ссылке, содержащейся в определенном элементе.

Элемент выглядит как простой текст, внутри которого содержится ссылка.

Вот его код:

<span class="pointer" onclick="window.open('index.php?view=site&t=3cw6k27f0b2301035157ac146b37d2b0','_blank');">Automobily</span>

Знаю, что можно просто выполнить клик по тексту на странице сайта:
_IELinkClickByText($oIE, "Automobily")
После чего, как и положено, происходит переход по ссылке в таком формате:

www.site.com/index.php?view=site&t=3cw6k27f0b2301035157ac146b37d2b0

Но такой вариант не совсем подходит, так как текст по которому нужно выполнить клик неизвестен заранее.(Текст меняется каждый раз после входа на сайт). Так же, как неизвестна и эта область ссылки: "3cw6k27f0b2301035157ac146b37d2b0" - она так же меняется после входа на сайт.


Как в таком случае выполнить клик по ссылке?


Может получить текст из этой области:


<span class="pointer" onclick="window.open('index.php?view=site&t=3cw6k27f0b2301035157ac146b37d2b0','_blank');">ОБЛАСТЬ ТЕКСТА</span>

А затем кликнуть по найденому тексту на странице сайта?

_IELinkClickByText($oIE, "Найденный текст")


Или же возможно получить нужную часть ccылки из этой области:

<span class="pointer" onclick="window.open('ОБЛАСТЬ ССЫЛКИ,'_blank');">Automobily</span>

Полный код:

<div class="ad-block  " id="3cw6k27f0b2301035157ac146b37d2b0" style="margin-bottom:10px; ">
 <div class="ad-title">
  <span class="pointer" onclick="window.open('index.php?view=site&t=3cw6k27f0b2301035157ac146b37d2b0','_blank');">
   Automobily
  </span>
 </div>

Help.  :'(

Русское сообщество AutoIt

[Автоматизация] Клик по ссылке из элемента
« Отправлен: Август 27, 2014, 20:42:35 »

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2135
  • Репутация: 462
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
$oIe.document.querySelector("div>span[class='pointer']").click()


Оффлайн iwak [?]

  • Новичок
  • *
  • Сообщений: 28

  • Автор темы
  • Репутация: 0
    • Награды
inververs Спасибо.

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

Насколько я понимаю, можно использовать такое значение как .item(0) ; где 0 - это номер поинтера, по которому нужно кликнуть.

Но, возможно есть команда реализовать это проще?

Например, чтобы после клика по первому элементу item(0), выполнялся клик по следующему item(1) и так много раз?

Русское сообщество AutoIt

Re: [Автоматизация] Клик по ссылке из элемента
« Ответ #2 Отправлен: Август 28, 2014, 20:43:00 »

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1440
  • Репутация: 179
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Я бы сделал так:
Код: AutoIt [Выделить]
$oSpans = $oIE.document.getElementsByTagName("span")
If IsObj($oSpans) Then
    For $oSpan In $oSpans
        If $oSpan.className <> "pointer" Then ContinueLoop
        $oSpan.click()
    Next
EndIf
 

Или так (с использованием функций из библиотеки IE.au3):
Код: AutoIt [Выделить]
$oSpans = _IETagNameGetCollection($oIE, "span")
If Not @error Then
    For $oSpan In $oSpans
        If $oSpan.className <> "pointer" Then ContinueLoop
        _IEAction($oSpan, "click")
    Next
EndIf
 


Оффлайн iwak [?]

  • Новичок
  • *
  • Сообщений: 28

  • Автор темы
  • Репутация: 0
    • Награды
alex33 Благодарю.

И все таки, есть ли команда, позволяющая вытащить все тексты/ссылки из необходимых областей в коде со страницы.
Например вытащить текст

<span class="pointer" onclick="window.open('index.php?view=site&t=3cw6k27f0b2301035157ac146b37d2b0','_blank');">ОТСЮДА</span>

или ссылку

<span class="pointer" onclick="window.open('ВОТ ОТСЮДА','_blank');">Automobily</span>

Может это функция StringRegExp? Никак не могу с ней разобраться. Может подскажите хороший пример или урок с этой командой.

OffTopicБлин, я ещё столько всего не знаю  :(

Русское сообщество AutoIt

Re: [Автоматизация] Клик по ссылке из элемента
« Ответ #4 Отправлен: Август 29, 2014, 11:40:23 »

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1440
  • Репутация: 179
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
iwak  [?]
Цитировать
Может это функция StringRegExp? Никак не могу с ней разобраться. Может подскажите хороший пример или урок с этой командой.

Вот пример через Regexp. Кликни по названию функции и почитай.
Код: AutoIt [Выделить]
Local $sStr, $sNewStr, $aRegexp
$sStr = '<span class="pointer" onclick="window.open(''index.php?view=site&t=3cw6k27f0b2301035157ac146b37d2b0'',''_blank'');">ОТСЮДА</span>'

; 1)
$aRegexp = StringRegExp($sStr, '<span[\s]+class="pointer".*?>(.*?)</span>', 3)
If Not @error Then $sNewStr = $aRegexp[0]
MsgBox(0, "new str 1", $sNewStr)

; 2)
$sNewStr = StringRegExpReplace($sStr, '<span[\s]+class="pointer".*?>(.*?)</span>', '$1')
MsgBox(0, "new str 2", $sNewStr)
 




Добавлено: Август 29, 2014, 12:20:51
А так, через объект html можно через innerHTML или innerTEXT или через getAttribute / setAttribute.

Русское сообщество AutoIt

Re: [Автоматизация] Клик по ссылке из элемента
« Ответ #5 Отправлен: Август 29, 2014, 12:19:19 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
15 Ответов
6711 Просмотров
Последний ответ Январь 30, 2012, 01:55:30
от madmasles
7 Ответов
4050 Просмотров
Последний ответ Январь 22, 2012, 14:39:56
от madmasles
9 Ответов
8727 Просмотров
Последний ответ Октябрь 14, 2012, 23:35:15
от Kaster
0 Ответов
2784 Просмотров
Последний ответ Октябрь 12, 2012, 22:26:13
от madmasles
5 Ответов
3055 Просмотров
Последний ответ Ноябрь 25, 2012, 00:16:28
от DarWiM
2 Ответов
2184 Просмотров
Последний ответ Январь 27, 2013, 21:48:03
от madmasles
0 Ответов
1799 Просмотров
Последний ответ Декабрь 15, 2013, 19:52:35
от Byrnane
5 Ответов
3349 Просмотров
Последний ответ Май 05, 2014, 17:59:53
от inververs
11 Ответов
3134 Просмотров
Последний ответ Январь 06, 2015, 10:13:26
от gregaz
5 Ответов
1229 Просмотров
Последний ответ Июнь 16, 2018, 20:03:17
от InnI