Как избежать повторного входа в систему при тестировании в Selenium Java - PullRequest
0 голосов
/ 03 августа 2020

Я хочу автоматизировать веб-приложение. Он требует входа в систему каждый раз, когда я запускаю тест. Я хочу обойти этот шаг входа в систему и получить прямой доступ к нужному URL. Ниже мой код, и он не работает в соответствии с моими потребностями.

class practice {

public static void main(String[] args) {
// TODO Auto-generated method stub
WebDriver driver;
ChromeOptions options = new ChromeOptions();


options.addArguments("--user-data-dir=C:/Users/hp/AppData/Local/Google/Chrome/User Data/Profile 1");
System.setProperty("webdriver.chrome.driver", "C:///chromedriver.exe");
driver=new ChromeDriver();

driver.get("https:xyz.com/dashboard/campaigns#display=active&page=1&view=list&sort=startdate&sort_order=desc&region=all&search=");

// If login page appears
if (driver.findElement(By.xpath("//*[@id='sessions_new']/div/div[2]/div[2]/div[2]/div/div[1]/h2")).isDisplayed())
{
System.out.println("This is login page");



driver.findElement(
    By.xpath("//*[@id=\"sessions_new\"]/div/div[2]/div[2]/div[2]/div/div[2]/div[2]/form/div/div[1]/input")).sendKeys(
    "wadfd@gmail.com");
driver.findElement(
    By.xpath("//*[@id=\"sessions_new\"]/div/div[2]/div[2]/div[2]/div/div[2]/div[2]/form/div/div[2]/input")).sendKeys(
    "abc123");
driver.findElement(By.name("login")).click();

}

// if required page appears
else
{
System.out.println("This is NOT login page");
driver.findElement(By.xpath("/html/body/div[2]/section[1]/nav/ul/li[2]/a/span")).click();
}

}

}

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Может быть, есть два решения, которые вы могли бы попробовать, если хотите сократить время входа в систему и сэкономить время работы.

  1. Если вы используете TestNG, просто поместите Login в BeforeClass (), чтобы все test () в этом классе требует входа в систему только один раз.
  2. Если веб-приложение хранит информацию для аутентификации в cook ie, вы можете войти вручную и извлечь cook ie, а затем после некоторого преобразования формата вы можете передать повар ie водителю. Демонстрация вроде этого:
// Tip: firstly convert the raw cookie String to List<Cookie>, 
// then call the below in for-loop

driver.manage().addCookie(Cookie cookie);

Однако я думаю, что вариант 2 не является хорошим решением при реальном тестировании проекта, это просто идея для справки.

0 голосов
/ 03 августа 2020

Есть несколько вещей, которые могут go ошибаться, когда я вижу ваш код ниже, поэтому трудно сказать вам, что исправить (сбой? В какой строке?), Но я не вижу никакого взаимодействия, такого как .click() после выполнения действий sendKeys. Мне кажется, что в блоке if, когда вы находитесь на странице входа, вы заполняете свои учетные данные, но никогда не нажимаете кнопку входа.

Еще один момент: вам следует избегать использования Thread.sleep like пляж. Попробуйте найти wait.until(ExpectedConditions.visibilityOfElementLocated(<put here a selector for a element you want to see loaded>)); или любые подобные ExpectedConditions для более чистого и более эффективного использования Selenium.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...