zur Zeit habe ich den folgenden Code Selen und PhantomJS in C#:Headless Browser C# und Alternativen
public class Driver
{
static void Main()
{
using (var driver = new PhantomJSDriver())
{
driver.Navigate().GoToUrl("https://www.website.com/");
driver.Navigate().GoToUrl("https://www.website.com/productpage/");
driver.ExecuteScript("document.getElementById('pdp_selectedSize').value = '10.0'"); //FindElementById("pdp_selectedSize").SendKeys("10.0");
driver.ExecuteScript("document.getElementById('product_form').submit()");
driver.Navigate().GoToUrl("http://www.website/cart/");
Screenshot sh = driver.GetScreenshot();
sh.SaveAsFile(@"C:\temp\test.jpg", ImageFormat.Png);
}
}
}
Mein Ziel ist es, ein Produkt zum Warenkorb hinzugefügt werden zu können und dann automatisch zur Kasse. Der Screenshot ist nur enthalten, um zu testen, ob der Code erfolgreich funktioniert hat. Mein erstes Problem ist, dass ich oft einen Fehler bekomme, dass das Element mit der Produkt-ID "pdp_selectedSize" nicht gefunden werden kann. Ich nehme an, dies liegt daran, dass der Webtreiber die Seite noch nicht geladen hat, also suche ich nach einer Möglichkeit, so lange zu prüfen, bis sie gefunden wird, ohne ein bestimmtes Zeitlimit setzen zu müssen.
Ich bin auch auf der Suche nach schnelleren Alternativen anstelle eines Headless-Browsers zu verwenden. Ich benutze einen kopflosen Browser anstelle von HTTP-Anfragen, weil ich bestimmte Cookies brauche, um auf der Seite auschecken zu können, und diese Cookies werden über Javascript auf der Seite gesetzt. Wenn jemand eine Empfehlung für eine schnellere Methode hat, wäre es sehr dankbar, danke!
Werfen Sie einen Blick auf 'ExpectedConditions' in der [Selenium Reference] (http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp). – Brian
Ist das ein Teil von WebDriverWait? – JBoy
Es funktioniert in Verbindung mit 'WebDriverWait', ja. – Brian