Что нового

[Окна, Диалоги] cloud mail клик по нужному элементу

kristow13

Новичок
Сообщения
76
Репутация
0
Я зайдя на страницу cloud.mail.ru хочу кликнуть по нужному файлу, получить URL на скачивание этого файла, скопировать его в буфер.

Вот код того самого элемента:
Код:
<div data-id="/742_report.zip" class="b-datalist__item b-datalist__item_thumb"><div title="742_report.zip" data-id="/742_report.zip" class="b-thumb b-thumb_"><div class="b-thumb__pic"><div class="b-thumb__icon-wrapper"><div class="b-thumb__icon"><i class="ico ico_filetype-big ico_filetype-big_ ico_filetype_archive"></i></div></div><div class="b-thumb__overlay js-preview-link" data-name="link"><div class="b-thumb__info"><div class="b-thumb__info__ctrl" data-name="ctrl"><div data-bem="cbx" data-id="/742_report.zip" class="js-cbx cbx js-item-cbx"><div class="cbx__checkmark"></div></div><span class="b-thumb__info__ctrl__icon b-thumb__info__ctrl__icon_inactive" data-name="publish"><i data-bem="ico" class="ico ico_datalist ico_datalist_publish ico_datalist_publish_inactive"></i></span></div></div></div></div><div class="b-thumb__name"><a rel="history" class="js-href b-thumb__name__link" href="https://cloclo22.datacloudmail.ru/view/742_report.zip?etag=3990D40C2FA7CB85E32BF9A4B85819B6C2B9EEEE&amp;x-email=arh-imperiaplastik%40mail.ru" data-name="link"><span class="b-thumb__name__text">742_report.zip</span></a></div></div></div>

Скрин для наглядности прикрепил...

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

Либо второй способ, это эмуляция нажатия правой кнопки мыши по объекту для получения меню, и в этом меня выбрать пункт "Получить ссылку".
 

Вложения

  • 2015-06-03_16-47-13.png
    2015-06-03_16-47-13.png
    125.4 КБ · Просмотры: 19

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
$oLinks = _IETagNameGetCollection($oIE, "a")
If IsObj($oLinks) Then
	For $oLink In $oLinks
		If StringInStr($oLink.href, "742_report.zip") Then
			$sLink = $oLink.href
			ExitLoop
		EndIf
	Next
EndIf
If $sLink <> "" Then
	ClipPut($sLink)
	MsgBox(0, "", $sLink)
Else
	MsgBox(16, "error", "error get link, link not found")
EndIf
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
Спасибо за ответ.
Но мне нужна не ссылка на скачивание текущего файла... А получить ссылку для публикации ссылки вне cloud.mail.ru
т.е. для получения внешней ссылки файла...
Прикрепил скрин для наглядности. Такое окно появляется если нажать на значок цепочка, или по второму варианту...
 

Вложения

  • 2015-06-03_17-19-50.png
    2015-06-03_17-19-50.png
    160.2 КБ · Просмотры: 18

alex33

Скриптер
Сообщения
1,457
Репутация
186
А если так?
Код:
$oIE.document.getElementsByClassName("ico_datalist_publish").item(0).click();
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
Ура!
Окошко с ссылкой открылось!
Спасибо.
Осталось саму ссылку из окна вытащить :whistle:
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
kristow13 сказал(а):
Ура!
Окошко с ссылкой открылось!
Спасибо.
Осталось саму ссылку из окна вытащить :whistle:
А у неё код какой? (у этого окошка)...
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
Вот код этого окошка:
E7r8i3iNP


https://cloud.mail.ru/public/HDqP/E7r8i3iNP
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
Вот код того окна:
Код:
<div class="b-layer__container b-layer__container_publish"><div class="b-layer__placeholder"><button title="Закрыть" class="btn btn_layer_close " data-bem="btn" data-name="close"><i class="ico ico_layer_close ico_layer" data-bem="ico"></i></button><div class="publishing__placeholder"><div class="publishing"><div class="publishing__block publishing__link"><div class="publishing__title">Ссылка на файл «742_report.zip»</div><div class="publishing__url"><input class="publishing__url__input publishing__url__input_" readonly="readonly" placeholder="Доступ к ссылке закрыт" value="https://cloud.mail.ru/public/AjJ2/U42pgvTYK" data-name="url" data-non-first-click=""><div class="publishing__url__buttons"><button class="btn btn_main btn_publishing-url btn_ " style="display: none;" data-bem="btn" data-name="copy"><span class="btn__text">Копировать</span></button><button class="btn btn_publishing-url btn_ " data-bem="btn" data-name="popup"><span class="btn__text">Посмотреть</span></button></div></div><div class="publishing__controls"><button class="btn btn_link btn_link_unpublish " data-bem="btn" data-name="unpublish"><span class="btn__text">Удалить ссылку</span></button></div></div><div class="publishing__block publishing__share"><div class="publishing__title publishing__share__title">Доступ к файлу</div><div class="publishing__share__placeholder"><div class="share share_view"><div class="share__public-link"><span class="share__public-link__text"><b>Просмотр</b> доступен</span> <span class="share__public-link__icon"><i class="ico ico_sharing_publish_active" data-bem="ico"></i></span> <span class="share__public-link__value">всем, у кого есть ссылка</span></div></div></div><div class="b-notice" style="display: none;" data-bem="b-notice"><i class="ico ico_notice ico_notice_error" data-bem="ico"></i><span class="b-notice__text b-notice__text_error"></span></div></div><div class="publishing__block publishing__social  "><div class="publishing__title publishing__social__title">Поделиться</div><div class="publishing__social__btns"><button class="btn btn_neighboring btn_social btn_social-email btn_enabled btn_ " data-bem="btn" data-name="social" data-id="email"><i class="ico ico_social_email ico_social" data-bem="ico"></i><span class="btn__text btn__text_pad">Отправить</span></button><button class="btn btn_neighboring btn_social btn_social-mm btn_enabled btn_ " data-bem="btn" data-name="social" data-id="mm"><i class="ico ico_social_mm ico_social" data-bem="ico"></i><span class="btn__text btn__text_pad">Мой Мир</span></button><button class="btn btn_neighboring btn_social btn_social-ok btn_enabled btn_ " data-bem="btn" data-name="social" data-id="ok"><i class="ico ico_social_ok ico_social" data-bem="ico"></i><span class="btn__text btn__text_pad">Одноклассники</span></button><button class="btn btn_neighboring btn_social btn_social-vk btn_enabled btn_ " data-bem="btn" data-name="social" data-id="vk"><i class="ico ico_social_vk ico_social" data-bem="ico"></i><span class="btn__text btn__text_pad">ВКонтакте</span></button><button class="btn btn_neighboring btn_social btn_social-fb btn_enabled btn_ " data-bem="btn" data-name="social" data-id="fb"><i class="ico ico_social_fb ico_social" data-bem="ico"></i><span class="btn__text btn__text_pad">Facebook</span></button><button class="btn btn_neighboring btn_social btn_social-tw btn_enabled btn_ " data-bem="btn" data-name="social" data-id="tw"><i class="ico ico_social_tw ico_social" data-bem="ico"></i><span class="btn__text btn__text_pad">Twitter</span></button></div></div></div></div></div></div>

И еще вопросик...
Выше приведенный код открывает окно создания внешней ссылки первого элемента. А как сделать выбор по имени файла?
Вот код для выбора элемента, там сейчас два файла (картинка с именем даты, и zip архив.):
Код:
<div class="b-datalist__body"><div class="b-datalist__item b-datalist__item_thumb" data-id="/2015-06-03_17-35-49.jpg"><div title="2015-06-03_17-35-49.jpg" class="b-thumb b-thumb_" data-id="/2015-06-03_17-35-49.jpg"><div class="b-thumb__pic"><div class="b-thumb__pic__image-wrapper"><img class="b-thumb__pic__image" onerror="this.parentNode.style.display='none'" src="https://cloclo14.cloud.mail.ru/weblink/thumb/w0/HDqP/E7r8i3iNP"></div><div class="b-thumb__icon-wrapper"><div class="b-thumb__icon"><i class="ico ico_filetype-big ico_filetype-big_ ico_filetype_picture"></i></div></div><div class="b-thumb__pic__image" style='background-image: url("https://cloclo14.cloud.mail.ru/weblink/thumb/w0/HDqP/E7r8i3iNP");'></div><div class="b-thumb__overlay js-preview-link" data-name="link"><div class="b-thumb__info"><div class="b-thumb__info__ctrl" data-name="ctrl"><div class="js-cbx cbx js-item-cbx" data-bem="cbx" data-id="/2015-06-03_17-35-49.jpg"><div class="cbx__checkmark"></div></div><span class="b-thumb__info__ctrl__icon b-thumb__info__ctrl__icon_active" data-name="publish"><i class="ico ico_datalist ico_datalist_publish ico_datalist_publish_active" data-bem="ico"></i></span></div></div></div></div><div class="b-thumb__name"><a class="js-href b-thumb__name__link" href="https://cloclo14.datacloudmail.ru/view/2015-06-03_17-35-49.jpg?etag=B4080A96B70184E9DD83E2A5B29A9A1B9B65C110&amp;x-email=arh-imperiaplastik%40mail.ru" rel="history" data-name="link"><span class="b-thumb__name__text">2015-06-03_17-35-49.jpg</span></a></div></div></div><div class="b-datalist__item b-datalist__item_thumb" data-id="/742_report.zip"><div title="742_report.zip" class="b-thumb b-thumb_" data-id="/742_report.zip"><div class="b-thumb__pic"><div class="b-thumb__icon-wrapper"><div class="b-thumb__icon"><i class="ico ico_filetype-big ico_filetype-big_ ico_filetype_archive"></i></div></div><div class="b-thumb__overlay js-preview-link" data-name="link"><div class="b-thumb__info"><div class="b-thumb__info__ctrl" data-name="ctrl"><div class="js-cbx cbx js-item-cbx" data-bem="cbx" data-id="/742_report.zip"><div class="cbx__checkmark"></div></div><span class="b-thumb__info__ctrl__icon b-thumb__info__ctrl__icon_inactive" data-name="publish"><i class="ico ico_datalist ico_datalist_publish ico_datalist_publish_inactive" data-bem="ico"></i></span></div></div></div></div><div class="b-thumb__name"><a class="js-href b-thumb__name__link" href="https://cloclo14.datacloudmail.ru/view/742_report.zip?etag=3990D40C2FA7CB85E32BF9A4B85819B6C2B9EEEE&amp;x-email=arh-imperiaplastik%40mail.ru" rel="history" data-name="link"><span class="b-thumb__name__text">742_report.zip</span></a></div></div></div></div>
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
kristow13 [?]
Вот код того окна

Ну, эта ссылка находится в обычном input поле.
Можно сделать так, цикл нужен для возможного ожидания появления элемента:
Код:
For $c = 1 To 10
	$oInput = $oIE.document.getElementsByClassName("publishing__url__input").item(0);
	$sLink = _IEFormElementGetValue($oInput)
	If Not @error Then ExitLoop
	Sleep(1000)
Next
If $sLink <> "" Then
	ClipPut($sLink)
	MsgBox(0, "", $sLink)
Else
	MsgBox(16, "error", "error get link, link not found")
EndIf



Добавлено:
Сообщение автоматически объединено:

kristow13 [?]
А как сделать выбор по имени файла?
Ну просто пройди по коллекции элементов...
Код:
$oElems = $oIE.document.getElementsByClassName("b-thumb")
If IsObj($oElems) Then
	For $oElem In $oElems
		$sFilename = StringStripWS(_IEPropertyGet($oElem, "innertext"), 7)
		ConsoleWrite($sFilename & @CRLF)
		If MsgBox(1, "file", $sFilename) = 2 Then ExitLoop
	Next
EndIf
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
Спасибо за помощь!
выбор по имени я сделал так: :whistle:
Код:
$divs = _IETagNameGetCollection($oIE, 'div')
Global $ia = 0
For $div In $divs
   if $div.classname == 'b-thumb b-thumb_' Then
	  If $div.title == '741_report.zip' Then
		 ExitLoop
	  EndIf
	  $ia = $ia+1
   EndIf
Next
$oIE.document.getElementsByClassName("ico_datalist_publish").item($ia).click();
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
лучше это сделать внутри цикла:
Код:
If $div.title == '741_report.zip' Then
         $oIE.document.getElementsByClassName("ico_datalist_publish").item($ia).click();
         ExitLoop
      EndIf
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
[Автоматизация] Re: [Окна, Диалоги] cloud mail клик по нужному элементу

Всем привет!
В прошлый раз помогли автоматизировать получение ссылки загруженного файла на cloud.mail.ru

Сейчас на сайте изменился html код.
Стал хитрее...
Помогите пожалуйста поймать кнопку для выдачи ссылки на скачивание...
Вот такой теперь код:
Код:
<div class="b-datalist__item b-datalist__item_thumb" data-id="/Small_01_02_2016.zip">
	<div class="b-thumb b-thumb_file" data-id="/Small_01_02_2016.zip">
		<div class="b-thumb__inner" data-name="link" data-mnemo="b-thumb">
			<span class="b-thumb__name" data-name="ctrl">
				<div class="js-checkbox b-checkbox js-item-checkbox b-checkbox_in-thumb" data-id="/Small_01_02_2016.zip" data-bem="checkbox">
					<div class="b-checkbox__checkmark"></div>
				</div>
				<span class="b-thumb__spacer-ext">.zip</span>
				<div class="b-thumb__name-container">
					<span class="b-thumb__name-text">Small_01_02_2016</span>
					<span class="b-thumb__name-ext">.zip</span>
				</div>
			</span><i class="file-icon file-icon_big file-icon_type_ ico_filetype_archive" data-bem="file-icon"></i>
			<div class="b-thumb__frame-container" data-name="preview"></div>
			<div class="b-thumb__foot" data-name="ctrl"><a class="btn btn_transparent btn_single js-download" href="#" data-name="download" data-bem="btn" data-blockid="btn">
				<i class="ico ico_system_download ico_system" data-bem="ico"></i>
				<span class="btn__text btn__text_pad">Скачать 220 МБ</span></a>
				<div class="b-thumb__foot__controls b-thumb__foot__controls_right">
					<button class="btn btn_link" data-name="publish" data-bem="btn" data-blockid="btn">
						<i class="ico ico_datalist_publish_inactive ico_datalist ico_datalist_publish" data-bem="ico"></i>
					</button>
				</div>
			</div>
		</div>
	</div>
</div>
Таких блоков на каждый загруженный файл...
Нужно их перебрать и найти тот <div> что совпадает с data-id="/Small_01_02_2016.zip"
И нажать в нем <button class="btn btn_link" data-name="publish" data-bem="btn" data-blockid="btn"> чтобы открыть окно с получением ссылки на файл...
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Re: [Автоматизация] Re: [Окна, Диалоги] cloud mail клик по нужному элементу

kristow13 сказал(а):
Нужно их перебрать и найти тот <div> что совпадает с data-id="/Small_01_02_2016.zip"
И нажать в нем <button class="btn btn_link" data-name="publish" data-bem="btn" data-blockid="btn"> чтобы открыть окно с получением ссылки на файл...
Код:
$oDivs = _IETagNameGetCollection($oIE, "div")
If Not @error Then
	For $oDiv In $oDivs
		If $oDiv.getAttribute("data-id") = "/Small_01_02_2016.zip" Then
			$oButton = _IETagNameGetCollection($oDiv, "button", 0) ; думаю, что там одна нужная кнопка, получаем первую кнопку из элемента...
			_IEAction($oButton, "click") ; кликаем на кнопку
		EndIf
	Next
EndIf



Добавлено:
Сообщение автоматически объединено:

А вот так можно нажать на кнопку скачать на странице публичного файла:
Код:
$oDiv=_IEGetObjById($oIE, "public-file")
$oButton=_IETagNameGetCollection($oDiv, "button", 0)
_IEAction($oButton, "click")

Код:
<div class="viewer__information__controls"><div class="viewer__information__control viewer__information__control_btn"><button data-bem="btn" data-blockid="btn" class="btn btn_main btn_last " data-name="action"><span class="btn__text">Скачать</span></button></div></div>
 
Верх