2016-08-12 3 views
0

Если веб-приложение имеет JS код, такой как:Предотвращение выполнения бесконечного цикла в JS Selenium/Phantomjs

for(i=0; i > -1; i++){var a=1}; // Infinite loop 

и я использую Селен/Phantomjs, чтобы просмотреть его, он будет застрял навсегда.

Как я могу решить эту проблему? Есть ли у phantomjs возможность установить тайм-аут для выполнения скрипта?

+0

Нет, вы не можете. Какую версию PhantomJS вы используете? Кстати, любой браузер должен зависнуть при открытии такого сайта. –

+0

Я использую 2.1.1. Значит, эта проблема неразрешима? – user1571234

+0

Поскольку JavaScript является однопоточным, а PhantomJS получает доступ к контексту страницы через JavaScript, бесконечный цикл в контексте страницы затормозит страницу. Это просто плохое программирование. В любом случае, вы можете попытаться изменить страницу JavaScript, которая делает это безумие через прокси-сервер или что-то в этом роде. –

ответ

-2

Использование resourceTimeout

var page = require('webpage').create(); 
page.settings.resourceTimeout = 5000; // 5 seconds 

Происхождение: phantomJS webpage timeout

+0

похоже не работает. – user1571234

+0

Попробуйте первый ответ на ссылку – Raskayu