2013-07-12 1 views
4

Я пытаюсь запустить некоторые тесты на веб-сайте, ищущем проблемы.Как отключить внешнее выполнение javascript/запросы сайта в phantomjs

Для записи я использую phantomjs с ghostdriver в селеном из C#

Все работает отлично, но я хотел бы, чтобы ускорить процесс. Проверяя заголовки в скрипаче, много времени тратится на внешние звонки на внешние сайты (facebook/twitter) для социальных плагинов, которые, по-видимому, кажутся хорошими в сегодняшних днях: - \

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

Есть ли способ в фантоме, чтобы получить эффект, который noscript/ghostery дает в firefox?

+0

У вас есть доступ к коду сайта? Если это так, атакуйте его под другим углом - отключите эти плагины в тестовой среде. – Arran

+0

Нет, к сожалению, нет – Martin

ответ

2

Чтобы отфильтровать недействительные запросы, вы можете использовать onResourceRequested callback: это позволяет отменить нежелательные URL-адреса.

Вот базовый пример для stackoverflow.

var system = require('system'); 
var page = require('webpage').create(); 
var domain = 'stackoverflow.com' 
var url = 'http://www.stackoverflow.com'; 

page.onResourceRequested = function (requestData, networkRequest) { 
    if (requestData.url.indexOf('.js')===-1 && requestData.url.indexOf(domain) === -1) { 
     networkRequest.abort(); 
     console.log('aborted :'+ requestData.url) 
    } 
}; 

page.onResourceReceived = function (response) { 
    console.log('Response (#' + response.url + ', stage "' + response.stage + '"): '); 
}; 

if (system.args.length !== 1) { 
    console.log("Usage: phantomjs filter.js url"); 
} else { 
    page.open(url, function (status) { 
     if (status = 'succeed') { 
      console.log("status", status); 
      phantom.exit(0); 
     } 
    }); 
} 

Обратите внимание, что это не рекомендуется, чтобы прервать Js файлы, так как это может привести к ошибке яваскрипта на вас странице.

Другой способ ускорить ваш тест, чтобы отключить изображения с помощью аргумента --load-images=false

+0

Спасибо, я проверю это и посмотрю, смогу ли я выяснить, как это сделать в C# – Martin

+0

Вот пример C# для запуска скрипта: http://stackoverflow.com/a/26484685/289506 – ReinierDG

Смежные вопросы