Ich habe Probleme, Selen-Webtreiber zu bekommen, um einen Teil eines Overlays zu identifizieren und anzuklicken, der angezeigt wird, wenn ich zu www.oneplace.com navigiere. Das Overlay soll beim Anklicken ausgeblendet werden. Siehe unten für meinen SelencodeSelen scheint ein Overlay nicht zu erkennen
IWebDriver wd = new ChromeDriver();
try {
wd.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(7));
wd.Navigate().GoToUrl("https://www.google.co.uk/);
wd.Navigate().GoToUrl("http://www.oneplace.com/");
wd.FindElement(By.Id("takeoverOverlay")).Click();
if (!wd.FindElement(By.TagName("html")).Text.Contains("DONATE")) {
Console.Error.WriteLine("verifyTextPresent failed");
}
}
finally { wd.Quit(); }
Hallo Jeff, sehr schätzen Ihre Antwort und Beratung. Ihre Lösung funktioniert gut. Das sind nur frühe Tage für mich mit Selen. Ich denke, einige dieser Overlays haben kein X in der rechten Ecke. Außerdem steht es einem Benutzer frei, das Overlay auf schnellstmögliche Weise zu schließen. Ich frage mich, ob es eine Lösung für das anfängliche Problem gibt, einfach auf einen Teil der Overlay-Transparenz zu klicken, um das Overlay zu schließen. – olusegun
Wenn Sie Selenium sagen, auf ein Element zu klicken, wird es auf die Mitte dieses Elements klicken. Wenn das Element die Größe des Browserfensters hat und sich das Popup im Allgemeinen in der Mitte befindet, müssen Sie Selenium "helfen", wo Sie möchten. Sie können dies mit 'Actions' und' MoveToElement' mit einem Offset tun und auf eine beliebige Stelle auf dem Bildschirm klicken. Je nachdem, wo Sie klicken möchten, müssen Sie einige Berechnungen durchführen, damit Sie nicht vom Bildschirm oder Browser abklicken. – JeffC
Jackpot. Vielen Dank für diesen Bro. – olusegun