réglage en-têtes de requête en sélénium
Je suis d'essayer de définir l'en-tête de requête 'Referer' pour usurper une demande venant d'un autre site. Nous avons besoin de la capacité de test d'un référent spécifique est utilisé, ce qui renvoie à une forme spécifique à l'utilisateur, sinon une forme alternative est donnée.
Je peux le faire à l'intérieur de lutin par:
page.driver.headers = {"Referer" => referer_string}
mais je ne trouve pas l'équivalent fonctionnel de la selemium pilote.
Comment puis-je définir des en-têtes de requête dans le capybara sélénium pilote?
- Doublons possibles: en-Têtes et Selenium Webdriver 2, Comment envoyer un http RequestHeader à l'aide de Sélénium 2?
- Un autre double possible: Comment faire pour ajouter des en-têtes ou des paramètres à une requête HTTP traitées avec Selenium Webdriver?
- Merci, Andrey. Je me demande pourquoi cela n'a pas été offert quand j'étais à la recherche...
InformationsquelleAutor tamouse | 2013-03-26
Vous devez vous connecter pour publier un commentaire.
Webdriver ne contient pas une API pour le faire. Voir numéro 141 de Sélénium tracker pour plus d'info. Le titre de la question dit que c'est sur les en-têtes de réponse, mais il a été décidé que le Sélénium ne contiennent pas d'API pour les en-têtes de requête dans le champ d'application de cette question. Plusieurs questions à propos de l'ajout de l'API pour définir les en-têtes de requête ont été marqués comme des doublons: première, deuxième, troisième.
Ici sont un couple de possibilités que je peux proposer:
J'irais avec l'option 3 dans la plupart des cas. Il n'est pas difficile.
Noter que Ghostdriver a une API pour elle mais il n'est pas soutenu par les autres conducteurs.
J'ai eu le même problème. Je l'ai résolu le téléchargement de modifier les en-têtes de firefox add-on et de l'activer avec le sélénium.
Le code en python est le suivant
Pour ces gens à l'aide de Python, vous pouvez envisager d'utiliser Le Sélénium Fil, qui peuvent définir des en-têtes de requête, ainsi que de vous donner la possibilité d'inspecter les demandes et les réponses.
driver._client.set_header_overrides(headers=dict_headers)
à résoudre mon problème.header_overrides
propriété n'a pas de travail pour quelque raison pour vous? Vous pourriez peut-être le soulever comme un problème et spécifiez le fichier de configuration que vous utilisez?Eu le même problème aujourd'hui, sauf que j'avais besoin de définir différents referer par test. J'ai fini par utiliser un middleware et une classe pour passer en-têtes pour elle. J'ai pensé partager (ou peut-être il y a une solution plus propre?):
Alors je peut comprendre le contexte partagé où j'ai besoin, ou de passer les différents en-têtes dans un autre
before
bloc. Je n'ai pas testé avec autre chose que le Sélénium et le RackTest, mais elle doit être transparente, comme l'en-tête d'injection est effectuée avant la demande frappe réellement l'application.Si vous utilisez le
HtmlUnitDriver
, vous pouvez définir des en-têtes de requête en modifiant laWebClient
, comme suit:Les en-têtes seront ensuite toutes les demandes formulées par le navigateur web.
Vous pouvez le faire avec PhantomJSDriver.
À l'aide de l'objet de la requête, vous pouvez le filtre de sorte que la tête ne sera pas définie pour chaque demande.
vérifier cela:
chrome_options = Option()
Problème résolu!
Je voulais quelque chose d'un peu plus mince pour RSpec/Ruby ainsi que le code personnalisé n'avait qu'à vivre dans un seul endroit. Voici ma solution:
Puis dans mes specs: