Sélénium: Trouver l'Url de base
Je suis en utilisant le Sélénium sur des machines différentes pour automatiser les tests d'une application Web MVC.
Mon problème est que je ne peux pas obtenir l'url de base de chaque machine.
Je peux obtenir l'url à l'aide du code suivant:
IWebDriver driver = new FirefoxDriver();
string currentUrl = driver.Url;
Mais cela ne veut pas aider quand j'ai besoin de naviguer vers une autre page.
Idéalement, je pouvais suivantes pour naviguer sur les différentes pages:
driver.Navigate().GoToUrl(baseUrl+ "/Feedback");
driver.Navigate().GoToUrl(baseUrl+ "/Home");
Une solution de contournement possible j'ai utilisé est:
string baseUrl = currentUrl.Remove(22); //remove everything from the current url but the base url
driver.Navigate().GoToUrl(baseUrl+ "/Feedback");
Est-il un meilleur moyen que je pouvais faire ça???
- Juste pour s'assurer que je suis sur ce. Exemple:
http://www.google.com/something
...et que vous voulez spécifiquement juste lehttp://www.google.com
partie? - Quand je lance l'application, elle ira à une url de la forme localhost:12345/Login (ce sera différent en fonction de la machine), je veux le pilote pour aller à la page de localhost:12345/Commentaires. Donc, je veux juste le localhost:12345 la partie que je ne peux pas coder en dur un lien dans mon code, car il sera différent sur chaque machine.
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de contourner ce problème serait de créer un
Uri
exemple de l'URL.C'est parce que le
Uri
classe dans .NET code est en place pour ce faire exactement pour vous, alors vous devriez l'utiliser. J'irais pour quelque chose comme (code non testé):Essentiellement, vous êtes après la La propriété de l'administration dans le
Uri
classe.Remarque, il y a une propriété qui n'a qu'une chose semblable, appelé Accueil mais cela ne comprend pas les numéros de port, votre site ne. C'est quelque chose à garder à l'esprit.
Prendre la
driver.Url
, le lancer dans une nouvelleSystem.Uri
, et l'utilisationmyUri.GetLeftPart(System.UriPartial.Authority)
.Si votre URL de base est
http://localhost:12345/Login
, cela vous renvoiehttp://localhost:12345
.Essayer cette expression régulière prises à partir de ce réponse.