#c# #selenium #selenium-webdriver #asp.net-core-webapi #asp.net-core-2.2
#c# #селен #selenium-webdriver #asp.net-core-webapi #asp.net-core-2.2
Вопрос:
Мне нужен способ аутентификации в моей автоматизации WebAPI. Я извлек токен-носитель и передал свой json в объект .net, как мне передать токен JWT / Bearer и ввести необходимые заголовки в сеанс ChromeDriver при его открытии, поэтому, когда мое приложение переходит к https://localhost:5000/login он должен автоматически перенаправляться на -> https://localhost:5000/Dashboard .
class Program
{
//private static IWebDriver driver;
// ******->Selenium Specific Code<-******
// Instantiate the Chrome Driver
var driver = new ChromeDriver("/usr/local/bin/");
static IJavaScriptExecutor jsDriver = driver as IJavaScriptExecutor;
public static string setItemInLocalStorage(string item, string value)
{
var js = ((IJavaScriptExecutor)driver).ExecuteScript(String.Format(
"window.localStorage.setItem('userDetails','" value "');"));
return "";
}
//Method to Authenticate amp; GET Bearer Token from API.
public static async void GetAllWorkshopData(int WorkshopId)
{
UserAuth ua = new UserAuth();
ua.EmailAddress = "example@mail.com";
ua.Password = "Strongest!!!Pwd";
ua.WorkshopId = WorkshopId;
using (var client = new HttpClient())
{
var uri = "https://localhost:5001/api/userauth/Login";
string json = JsonConvert.SerializeObject(ua);
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
var res = await client.PostAsync(uri, content);
string datar = await res.Content.ReadAsStringAsync();
Example details = JsonConvert.DeserializeObject<Example>(datar);
// Navigate to the Endpoint
///here inject basic-auth token before selenium opens browser
driver.Navigate().GoToUrl("http://localhost:5000/Login");
setItemInLocalStorage("", datar);
driver.Navigate().GoToUrl("http://localhost:5000/Dashboard");
}
Ответ №1:
Здесь вы можете использовать исполнителей javascript. Ниже приведен пример, который вы можете использовать для настройки сеанса, файлов cookie и т. Д
IJavaScriptExecutor js = _driver as IJavaScriptExecutor;
driver.Navigate().GoToUrl("http://localhost:5000/Login");
js.ExecuteScript("window.sessionStorage.setItem('token', 'your access token')");