Lorsque j'écris un code de test avec du sélénium pour l'écran de téléchargement créé avec Springboot, La boîte de dialogue de sélection de fichier n'a pas pu être utilisée et le test n'a pas pu être effectué, la méthode pour le résoudre est donc décrite ci-dessous.
Puisqu'il est difficile d'utiliser <input type = 'file'>
avec du sélénium
Le fichier est automatiquement défini pour l'attribut de fichier côté serveur (côté Java).
Vous n'avez plus à vous soucier du fonctionnement de <input type = 'file'>
côté sélénium!
ControllerAdviceCustom.java
@ControllerAdvice
public class ControllerAdviceCustom {
@InitBinder
public void initBinderMock(WebDataBinder dataBinder) {
//Point d'extension simulé (l'implémentation utilise MockUp du côté test)
}
//Omis ci-dessous
}
MockFileEditor.java
public class MockFileEditor extends PropertyEditorSupport {
@Override
public void setValue(Object obj) {
//Générer et refléter MockMultipartFile pour le paramètre (Multipart)
String textFile = "dummy text file";
MultipartFile mockFile = new MockMultipartFile("file", textFile.getBytes());
super.setValue(mockFile);
}
}
SeleniumTest.java
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class SeleniumTest {
@Before
public void setup() {
//Implémentation de points d'extension simulés pour la classe ControllerAdviceCustom
new MockUp<ControllerAdviceCustom>() {
@Mock
@InitBinder
public void initBinderMock(WebDataBinder dataBinder) {
//Défini pour transmettre la classe MockFileEditor si le type est MultipartFile
dataBinder.registerCustomEditor(MultipartFile.class, new MockFileEditor());
}
};
}
@Test
Écrans de test public void, y compris les téléchargements de fichiers() {
//Omis ci-dessous
}
}
Il semble qu'il soit possible d'utiliser <input type = 'file'>
même avec du sélénium.
Cependant, il est douteux que cette méthode soit possible pour tous les navigateurs, et il est possible qu'elle ne soit pas utilisable en raison de la mise à niveau de la version du navigateur (mesures de sécurité), j'ai donc choisi cette méthode de mise en œuvre.
Recommended Posts