Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2018, 00:45   #11
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Пошёл курить base64.
Кажется я поймал трип.
О чё находится в строке, которую я пытаюсь скормить в Convert.FromBase64String

"data:image/png;base64,iVBORw0KGgoAAAA ... тут ещё многабукаф".

Мне ещё не понятно почему PNG.
При ручном сохранении из браузера там жпег.
Изображения
Тип файла: png trip.png (31.5 Кб, 81 просмотров)
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 15.07.2018, 01:04   #12
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да, надо обрезать это в начале.

Substring(IndexOf(',') + 1)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.07.2018, 01:24   #13
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Substring(IndexOf(',') + 1)
Я так и сделал.
К чему я в итоге пришёл ...
1. Там действительно PNG, видать так работает canvas в JS. На всякий случай пересохраняю в жпег.
2. При создании канвы в том же JS нужно дополнительно указать размеры, ибо без них я получаю нечто дефолтное, и в моём случае с прозрачными полями, а в жпеге - с чёрными.

Выкладываю листинг, вдруг кому пригодится.
И так, ключевые слова: C#, Selenium, WebDriver, JavaScript, изображение элемента.
Код:
const string captchaFile_Png="captcha.png",captchaFile_Jpg="captcha.jpg";
IWebElement current=driver.FindElementByXPath("xpath-str");

string base64_ImgCaptcha=(string)driver.ExecuteScript(@" // тут начинается скрипт
document.getElementByXPath=function(sValue) // стыбздил где то на просторах интернета
{
	var a = this.evaluate(sValue,this,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
	if (a.snapshotLength > 0)
		return a.snapshotItem(0);
};
var cnv=document.createElement('CANVAS');
cnv.width="+current.Size.Width+@";
cnv.height="+current.Size.Height+@";
var ctx=cnv.getContext('2d');
ctx.drawImage(document.getElementByXPath('xpath-str'),0,0);
return cnv.toDataURL();
"); // тут заканчивается скрипт

File.WriteAllBytes(captchaFile_Png,Convert.FromBase64String(base64_ImgCaptcha.Substring(base64_ImgCaptcha.IndexOf(',')+1)));
// дальше пересохранение в жпег
Image captchaImg=Image.FromFile(captchaFile_Png);
captchaImg.Save(captchaFile_Jpg,ImageFormat.Jpeg);
captchaImg.Dispose();
File.Delete(captchaFile_Png);
Такие вещи как xpath-str, current.Size.Width и current.Size.Height можно передавать параметрами, но мне впадлу (и так сойдёт). От этого уже точно ничего не изменится.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 15.07.2018, 01:36   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вместо xpathstr можно элемент Селениума передать в ExecuteScript.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение двух изображение с помощью ImageEn Lorden Общие вопросы Delphi 2 11.06.2015 20:34
Загрузить изображение в вк, с помощью API Rakim4ik Работа с сетью в Delphi 0 19.11.2013 18:07
Javascript изображение Ast JavaScript, Ajax 3 19.12.2011 14:19
Javascript и изображение Ast JavaScript, Ajax 11 18.12.2011 14:24