2011-12-21 3 views
3

J'utilise la bibliothèque Watir-Webdriver dans Ruby pour vérifier certaines pages. Je sais que je peux connecter via un proxy à l'aidewatir-webdriver changer de proxy tout en gardant le navigateur ouvert

profile = Selenium::WebDriver::Firefox::Profile.new#create a new profile 
profile.proxy = Selenium::WebDriver::Proxy.new(#create proxy data for in the profile 
    :http => proxyadress, 
    :ftp => nil, 
    :ssl => nil, 
    :no_proxy => nil 
) 
browser = Watir::Browser.new :firefox, :profile => profile#create a browser window with this profile 
browser.goto "http://www.example.com" 
browser.close 

Cependant, lorsque l'on veut se connecter à la même page plusieurs fois en utilisant des procurations différentes, je dois créer un nouveau navigateur pour chaque proxy. Le chargement (et le déchargement) du navigateur prend beaucoup de temps.

Alors, ma question: Y at-il un moyen de changer, en utilisant webdriver dans ruby, l'adresse proxy que Firefox utilise pour se connecter tout en gardant le navigateur ouvert?

+0

Pourquoi auriez-vous besoin de différents proxys? –

+0

parce que j'essaye de tester les proxies pour la disponibilité. – Qqwy

+0

Peut-être qu'il existe un moyen plus direct de le faire? certains moyens d'interroger le proxy directement pour voir s'il est là, au lieu de indirectement via la méthode 'set-it, try-a-page-and-se-if-it-loads' que vous semblez essayer. –

Répondre

2

Si vous souhaitez tester si une page est bloquée lors de l'accès via un serveur proxy, vous pouvez le faire via une bibliothèque sans tête. J'ai récemment eu du succès en utilisant mécaniser. Vous pouvez probablement utiliser net/http aussi.

Je ne sais toujours pas pourquoi vous devez changer le serveur proxy pour une session en cours.

require 'Mechanize' 
session = Mechanize.new 
session.set_proxy(host, port, user, pass) 
session.user_agent='Mac Safari' 
session.agent.robots = true #observe of robots.txt rules 
response = session.get(url) 
puts response.code 

Vous devez fournir le proxy hôte/port/user/pass (user/pass sont disponibles en option), et l'url. Si vous obtenez une exception, le response.code n'est probablement pas convivial.

1

Vous devrez peut-être utiliser un outil d'automatisation au niveau du système d'exploitation pour automatiser la navigation dans les menus FF afin de modifier le paramètre comme le ferait un utilisateur.

Pour les utilisateurs Windows, vous avez le choix entre le nouvel outil RAutomation ou AutoIT. Les deux peuvent être utilisés pour automatiser les choses au niveau de l'interface utilisateur du système d'exploitation, ce qui vous permettrait d'aller dans les paramètres du navigateur et de changer le proxy là-bas.

encore je pense que si vous vérifiez un plus grand nombre de sites qui les frais généraux pour modifier les paramètres de proxy ne serait pas beaucoup par rapport à tous la navigation du site et d'attendre le chargement des pages, etc.

À moins que vous ne suiviez actuellement une approche de «traversée de ligne» et que vous changiez plusieurs fois les paramètres de proxy pour chaque site que vous vérifiez? Si c'est le cas j'irais vers plus d'une méthode par colonne (si nous devions supposer que chaque colonne est un proxy, et chaque ligne est un site) et lancer le navigateur pour un proxy, vérifier tous les sites, puis changer le proxy et re-vérifier tous les sites. De cette façon, vous ne modifierez les paramètres de proxy qu'une seule fois pour chaque proxy, ce qui ne devrait pas ajouter trop de surcharge à votre script. Cela pourrait signifier un peu plus de travail avec le stockage et ensuite la transmission des résultats à la fin (si vous les écrivez sur une ligne à la fois), mais c'est ce à quoi servent les hachages ou les tableaux.

+0

J'utilise Windows Vista. Avec un outil d'automatisation au niveau OS, vous voulez dire quelque chose qui pourrait «cliquer» sur le menu de FireFox pour modifier le proxy de cette façon? – Qqwy

+0

Oui, exactement, watir peut seulement automatiser dans la fenêtre du navigateur, il ne peut pas invoquer d'autres menus, etc., du navigateur lui-même. un outil d'automatisation fonctionnant au niveau du système d'exploitation peut manipuler les menus du navigateur. –

Questions connexes