Во-первых, я не очень знаком с этим пакетом. Я обнаружил, что метод use_plugin('JavaScript') потребляет много памяти через профилировщик. Я заменил этот метод на плагин («JavaScript»), хотя потребление памяти было ниже, я не мог пройти через форму страницы входа на веб-сайты, которые я должен удалить.
Глобально определено:
my $scripter = WWW::Scripter->new();
$scripter->use_plugin('JavaScript')
if (my $form = $scripter->form_with_fields("Password")){
$form->value('Password', $conf->{'moxa_p'});
$form->submit();
}else{
print "dbg +> form 1.0 not found";
}
Пробовал использовать ключевые слова delete и undef, но это вообще не помогает!
Кстати, если вам нужно работать с JS, я бы предпочел Selenium.
Если вы знаете Javascript, pptr.dev используйте меньше системных ресурсов, чем Selenium (раздутое ПО) @zdim
Пожалуйста, прочитайте Как создать минимальный, полный и проверяемый пример.
@GillesQuénot "...pptr.dev..." -- спасибо за рекомендацию --- но я думал, что для него нет драйвера для Perl (кукловод)? Они хотят этого от Perl
Возможно, попробуйте Metacpan.org/pod/Playwright, если вы настаиваете на использовании Perl. Никогда не пробовал, но для этого требуется меньше ресурсов, чем для Selenium.
@GillesQuénot «Для программиста переключение языка не должно быть проблемой… если вы настаиваете на использовании Perl» — хм, они задают вопрос о Perl? Я не имею к этому никакого отношения :)
@GillesQuénot (Что касается меня, то у меня нет проблем с языками. Не могу сосчитать все, что я использовал... Но, опять же, здесь это не имеет значения)
Что самое неактуальное, так это отсутствие контекста в OP zdim ;) Еще одна библиотека, которую стоит попробовать: Metacpan.org/pod/Firefox::Marionette
Мне приходится использовать Perl из-за ограничений компании. Я запускаю эту программу на виртуальной машине Windows 10 с 8 ГБ ОЗУ.





Используйте max_docs в WWW::Scripter или stack_length в WWW::Mechanize. На странице руководства WWW::Machanize рекомендуется установить значение 5 или 10.
человек WWW::Скриптер
max_docs
Максимальное количество объектов документа, сохраняемых в истории (вместе с соответствующими объектами запроса и ответа). Если это значение опущено, будет использовано значение stack_length + 1 механизма. Это значение уменьшается на единицу, поскольку stack_глубина — это количество страниц, на которые вы можете вернуться, поэтому оно на единицу меньше количества записанных страниц. max_docs считает 0 эквивалентным бесконечности.
человек WWW::Механизировать
• «stack_length => $value»
Устанавливает глубину стека страниц, в котором отслеживаются все загруженные страницы. По умолчанию размер стека фактически бесконечен. Если стек съедает вашу память, установите меньшее число, скажем, 5 или 10. Установка нуля означает, что Мех не будет вести историю.
Когда речь идет о проблеме с оперативной памятью, строгим минимумом является предоставление информации о вашем компьютере, операционной системе и версиях программного обеспечения. Более того, если исполняемый Javascript глючит, это нормально. Но не зная ничего о контексте и не имея Javascript-кода, помочь здесь довольно сложно.