所以我正在尝试使用我的 Vue.js 作为前端对我的 Spring Boot Rest API 进行集成测试。当我想从需要 JWT 身份验证的页面中测试某些内容时,会出现问题,但我似乎无法进入该页面。对于单元测试,我可以使用
@WithMockUser
注解,它绕过身份验证的需要,进入需要身份验证的页面。
我对此很陌生。这是我到目前为止所得到的:
package com.example.SeleniumTesting;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.util.concurrent.TimeUnit;
public class FirstMainPageTest {
WebDriver driver = new ChromeDriver();
WebDriver driver2 = new ChromeDriver();
WebDriver driver3 = new ChromeDriver();
@BeforeTest
public void setUp(){
System.setProperty("webdriver.chrome.driver", ".\\chromedriver.exe");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("http://localhost:8081");
System.setProperty("webdriver.chrome.driver", ".\\chromedriver.exe");
driver2.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver2.manage().window().maximize();
driver2.get("http://localhost:8081/parties");
System.setProperty("webdriver.chrome.driver", ".\\chromedriver.exe");
driver3.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver3.manage().window().maximize();
driver3.get("http://localhost:8081/parties");
}
@Test
public void loadHomePageTitle(){
WebElement element = driver.findElement(By.cssSelector("h1"));
element.isDisplayed();
}
@Test
public void loadTheUnauthorizedPage(){
WebElement element = driver2.findElement(By.cssSelector("h1"));
element.isDisplayed();
element.getText();
}
@AfterTest
public void doThis(){
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.quit();
}
}
我也试过在这里使用@WithMockUser,但这不起作用。任何人都可以帮助我解决此问题或为我指明正确的方向(带有指向显示类似问题的网站的链接?
提前致谢!
答案 0 :(得分:2)
Selenium 测试是黑盒测试模式的一部分,因此它们的目的是从外部测试系统,而不必跳过普通用户会做的任何事情。所以我更喜欢自动化应用程序的登录部分。登录功能是您编写一次并用于所有测试的功能(例如 Junit @Before)。
答案 1 :(得分:0)
身份验证机制旨在防止任何未经身份验证的用户。如果您不进行身份验证,这也会阻止 Selenium 访问。这是意料之中的,真的不应该有任何解决方法或方法可以绕过。
如上一个答案所述,您应该执行普通用户会执行的所有登录步骤。您可能可以在测试之间重用登录状态,如果假设真实用户也会这样做,则可以使用该状态。但是,重新登录会给您带来更好的测试结果和信心。