Найти - Пользователи
Полная версия: Grab вывод сообщения ошибки.
Начало » Центр помощи » Grab вывод сообщения ошибки.
1
noob_saibot
Добрый день.
Захожу на почту и отправляю себе на другое мыло тестовое сообщение.
from grab import Grab
def sim():
    g = Grab(log_file='out.html')
    g.setup(proxy='proxy', proxy_type='http', proxy_userpwd='user:pswd')
    g.go("https://e.mail.ru/")
    g.set_input("Login","login")
    g.set_input("Password","pswd")
    g.submit()
    print g.xpath_text("//*")
    g.go("https://e.mail.ru/compose/")
    g.set_input("To","mail")
    g.set_input("Subject","test")
    g.submit()
    print g.xpath_text("//*")
sim()
Письмо не отправляется с почты, оно сохраняется в черновики по неизвестной причине.
Хотелось бы увидеть что выдает почта после сабмита, но print g.xpath_text(“//*”)
выдает 68 страниц текста в котором найти ошибку сложно. out.html страница содержит только строку что сообщение сохранено в черновики.
Возможная проблема при отправке сообщения без текста это запрос о том уверены ли мы в необходимости отправки пустого сообщения, но второй сабмит мне не помог. Сабмит по имени кнопки отправки сообщения не выходит так как у кнопки нет имени.
Кнопка выглядит так :
<a class="button-a js-send" role="submit" tabindex="1" title="Ctrl+Enter">Отправить</a>
Как можно увидеть, что мне сообщает почта?
И как можно решить проблему?
noob_saibot
Я, может быть, какую чушь “сморозил”, вы мне сообщите об этом… пожалуйста.
lorien
Посмотрите снифером, что отсылает Grab, далее посмотрите снифером, что отсылает браузер, далее сравните. Скорее всего вы не устанавливаете, какую-то POST-переменную при отсылке письма. В частности, проблема может быть в том, что вам нужно выставить имя submit-кнопки, на которую вы “нажимаете”. А т.к. этого имени нет, то майл действует по-умолчанию т.е. сохраняет письмо в черновики.
noob_saibot
Сниффер поставить нет возможности. Я посмотрел что передается в пост с помощью logging (в принципе это же я и видел в firebug'е ):
POST request:
text : test
form_sign : 34342314925017715651296167803246089659
BCC :
To : email@email.ru
cancel : Отмена
message : 5pfZ5Y6G
Body :

F name S name
cloud_files_ids :
old_charset :
form_token : 05077a4e74457a73190706040d010204060d010605080002040302040500080f01010601090b030407070d0e03040d164a545e42554155
draft : Сохранить
actionId : 1
orfo : rus
direction : re
re_msg :
RealName : 0
CC :
security_image_word :
draft_msg :
HTMLMessage : 0
Filedata :
fwd_msg :
attached_ids :
files_id :
files_ids :
template_id :
Subject : test

Я так понял надо заполнить пустые поля чемто мне неизвестным, чтобы отправить письмо?
Есть идеи какой параметр прописать?
lorien
Посмотрите в firebug, как браузер заполняет поля и сделайте так же.
noob_saibot
Поля заполняются при создании письма, далее после отправки не меняются. Что-то лыжы у меня не едут…
Вот что нашел в firebug:
<form id="sentmsgcomposeForm" class="composeForm editorHTMLMode" enctype="multipart/form-data" name="Compose" method="post" action="/compose/" data-form-inited="yes">
<input type="hidden" value="" name="files_ids">
<input type="hidden" value="" name="actionId">
<input type="hidden" value="" name="text">
<input type="hidden" value="re" name="direction">
<input type="hidden" value="rus" name="orfo">
<input type="hidden" value="" name="form_sign">
<input type="hidden" value="" name="form_token">
<input type="hidden" value="" name="files_id">
<input type="hidden" value="" name="cloud_files_ids">
<input type="hidden" value="5pLcv1GF" name="message">
<input type="hidden" value="" name="old_charset">
<input type="hidden" value="" name="template_id">
<input type="hidden" value="1" name="HTMLMessage">
<input type="hidden" value="" name="draft_msg">
<input type="hidden" value="" name="re_msg">
<input type="hidden" value="" name="fwd_msg">
<input type="hidden" value="" name="attached_ids">
<input type="hidden" value="0" name="RealName">
<div id="sentmsgcomposeError" style="display: none;"></div>
<div id="sentmsgtoolbarComposeTop" class="toolbar toolbar_compose-top toolbar_corner-top">
<div class="jsdn">
!!!!!<input type="submit" value="Отправить" name="send">
<input type="submit" value="Сохранить" name="draft">
<input type="button" value="Отмена" name="cancel">!!!!!</div>
<div class="nojsdn">
<a class="button-a js-send" role="submit" tabindex="1" title="Ctrl+Enter">Отправить</a>
<a class="button-a js-draft" role="submit" tabindex="2" title="Ctrl+S">Сохранить</a>
<a class="button-a js-cancel" role="button" tabindex="3">Отмена</a>
Выделенные строчки скрыты и не меняются ни при создании письма ни при его отправке, зато там есть имена кнопок) submit по этому имени не видит.
Осталось как то к этой скрытой кнопке обратиться. Есть ли идеи как?
PS. Пробовал make_request=False непомогло, строчки остались скрытыми.
lorien
Попробуйте так grab.submit(submit_name='send')

Я щас глянул код граба, он оставляет только одну submit-кнопку, сортирует их по name аттрибуту и оставляет одну. В вашем случае из send и draft он оставил draft, по-умолчанию.
noob_saibot
Рука лицо… Я писал g.submit(name=“send”) и не мог понять почему не работает!))))
Lorien огромное спасибо за помощь)))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB