Wenn ich einen Testcode mit Selen für den mit Springboot erstellten Upload-Bildschirm schreibe, Der Dateiauswahldialog konnte nicht ausgeführt werden und der Test konnte nicht durchgeführt werden. Daher wird die Methode zur Lösung unten beschrieben.
Da es schwierig ist, "" mit Selen zu betreiben Die Datei wird automatisch für das Dateiattribut auf der Serverseite (Java-Seite) festgelegt.
Jetzt müssen Sie sich keine Gedanken mehr über den Betrieb von auf der Selenseite machen!
ControllerAdviceCustom.java
@ControllerAdvice
public class ControllerAdviceCustom {
@InitBinder
public void initBinderMock(WebDataBinder dataBinder) {
//Mock-Erweiterungspunkt (Implementierung verwendet MockUp auf der Testseite)
}
//Unten weggelassen
}
MockFileEditor.java
public class MockFileEditor extends PropertyEditorSupport {
@Override
public void setValue(Object obj) {
//Generieren und reflektieren Sie MockMultipartFile für Parameter (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() {
//Implementierte Scheinerweiterungspunkte für die ControllerAdviceCustom-Klasse
new MockUp<ControllerAdviceCustom>() {
@Mock
@InitBinder
public void initBinderMock(WebDataBinder dataBinder) {
//Legen Sie fest, dass die MockFileEditor-Klasse übergeben wird, wenn der Typ MultipartFile ist
dataBinder.registerCustomEditor(MultipartFile.class, new MockFileEditor());
}
};
}
@Test
public void Testbildschirme einschließlich Datei-Uploads() {
//Unten weggelassen
}
}
Es scheint möglich zu sein, " auch mit Selen zu betreiben. Es ist jedoch zweifelhaft, ob diese Methode für alle Browser möglich ist, und es besteht die Möglichkeit, dass sie aufgrund eines Upgrades der Browserversion (Sicherheitsmaßnahmen) nicht verwendet werden kann. Daher habe ich diese Implementierungsmethode gewählt.
Recommended Posts