Wenn ich E2E-Tests mit Selen schreibe, stoße ich manchmal auf Pseudoelemente (:: before
oder :: after
) und habe Probleme.
Das Problem ist, dass diese Pseudoelemente ** Pseudo - ** Elemente sind, die in CSS verwendet werden und nicht direkt vom Selenium-Webtreiber manipuliert werden können. Mit anderen Worten, selbst wenn Sie klicken möchten, können Sie nicht direkt auf das Pseudoelement klicken. (Der folgende Code ist Selenide.)
Versuchen Sie, auf ein Pseudoelement zu klicken
$("button::before").click(); //Ich kann nicht klicken!
Klicken Sie dann auf jedes Element, einschließlich des Pseudoelements.
Versuche, auf ein Element zu klicken, das ein Pseudoelement enthält
$("button").click();
Hoffentlich funktioniert das, aber es schlägt fehl, weil die Elemente, die die Pseudoelemente enthalten, in der Vergangenheit unsichtbar waren. In einem solchen Fall bleibt keine andere Wahl, als den Speicherort im Browser im Ad-hoc-Bereich anzugeben und wie folgt zu klicken.
Klicken Sie auf das Element, das das Pseudoelement enthält
Actions actions = new Actions(WebDriverRunner.getWebDriver());
actions.click($("button")).build().perform();
//Menschen, die den Ort noch feiner bewegen wollen
actions.moveToElement($("button"), xOffset, yOffset).click().build().perform();
https://developer.mozilla.org/ja/docs/Web/CSS/Pseudo-elements https://stackoverflow.com/questions/45427223/click-on-pseudo-element-using-selenium https://www.quora.com/How-do-I-locate-After-and-Before-css-tag-in-selenium-webdriver
Recommended Posts