Selen CSS-Selektor : "sichtbar" ist kein Gültiger Selektor
Bin ich mit Page-Objekten auf map-Elemente in eine Seite, so ähnlich:
public class MyPage {
protected WebDriver driver;
@FindBy(css = "a[data-code=panel]:visible")
private WebElement cpaneladmin;
public MyPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(this.driver, this);
}
}
Das problem ist, diese :visible
CSS-Selektor. Sich, Selen nicht unterstützt. Gibt es eine Möglichkeit, wählen Sie die Option nur sichtbare Elemente mit xpath oder eine andere Art von CSS-Selektor?
Dank
:visible
ist nicht ein CSS-Selektor, es ist eine Sizzle selector. Das ist Ihr problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dann Durchlaufen Sie die Elemente, bis Sie finden die, die angezeigt wird.
Diese sollte Ihre Frage beantworten.
Wenn Sie überprüfen möchten, ob das element sichtbar ist ein weiterer Weg, verwenden element.IsDisplayed(), oder verwenden Sie ExpectedConditions.
Dies könnte Ihr problem lösen,
Der obige code speichert alle sichtbaren Elemente, die gefunden werden können durch die mitgelieferte Auswahl.
Versuchen Sie es mit einem
implicit wait
am Anfang des Codes für die oben genannten Anweisungen, um wirksamer zu sein.Wenn implizit warten, findElements() Methode zurückkehren wird, sobald es mehr als 0 Elemente in der Sammlung gefunden, oder wird eine leere Liste zurück, falls der timeout(30 Sek. im obigen Fall) erreicht ist.
Kam ich auf diese Frage ein bisschen spät, aber hier ist, wie ich es behoben in C#:
Und for.NET es stammt aus der "DotNetSeleniumExtras.WaitHelpers" NuGet-Paket: