[FIXED] Wie kann ich mehrere Preisdaten abrufen und sie mit Selenium bestellen und Etiketten mit c # einfügen?

Ausgabe

Ich versuche, eine Preisvergleichswebsite zu erstellen. Mit diesem Code kann ich den ersten Produktpreis erhalten. Aber ich muss 6 Produktpreise nehmen und ihre Labels platzieren und mit der Schaltfläche “Kaufen” möchte ich die Benutzer zum Kauflink schicken. Außerdem möchte ich Optionen wie niedrig zu hoch oder hoch zu niedrig bestellen. Wie kann ich das machen?

protected void Button0_Click0(object sender, EventArgs e)
{
    IWebDriver driver = new ChromeDriver();
    string str1, str2, str3, str4, str5, str6;
    driver.Url = "https://www.akakce.com/arama/?q=" + TextBox2.Text;
    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
    str1 = driver.FindElement(By.XPath("//span[@class='pb_v8']//span[@class='pt_v8']")).GetAttribute("textContent");
    Label1.Text = ("Price: " + str1);
}

Ich habe einige Änderungen vorgenommen, aber str 1 gibt zuerst die richtigen Daten aus, aber str 2 gibt 4. Produktpreis und überspringt 2 und 3. Produktpreise. Hier mein editierter Code:

IWebDriver driver = new ChromeDriver();
string str1, str2, str3, str4, str5, str6;
driver.Url = "https://www.akakce.com/arama/?q=" + TextBox2.Text;
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
str1 = driver.FindElement(By.XPath("//li[1]//a//span[@class='pb_v8']//span[@class='pt_v8']")).GetAttribute("textContent");
str2 = driver.FindElement(By.XPath("//li[2]//a//span[@class='pb_v8']//span[@class='pt_v8']")).GetAttribute("textContent");
Label1.Text = ("Price: " + str1);
Label2.Text = ("Price: " + str2);

Lösung

Zuerst müssen Sie auf den Preislink klicken lowest/highestund dann verwenden FindElements(), um eine Liste der Elemente zu erhalten, und dann iterieren

//click on lowest to highest
driver.FindElement(By.XPath("//p[@class='lms_v8']//a[2]")).Click();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(15);
IList<IWebElement> elements = 
driver.FindElements(By.XPath("//h3/following::span[1]//span[@class='pt_v8']"));
foreach (IWebElement element in elements)
    {
      Console.WriteLine(element.GetAttribute("textContent"));
    }

Fügen Sie einen Wert in einer Zeichenfolgenliste hinzu und weisen Sie ihn dann index..0-5 zu

//click on lowest to highest
            driver.FindElement(By.XPath("//p[@class='lms_v8']//a[2]")).Click();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(15);
            IList<IWebElement> elements = driver.FindElements(By.XPath("//h3/following::span[1]//span[@class='pt_v8']"));
            List<string> prices = new List<string>();
            foreach (IWebElement element in elements)
            {
                prices.Add(element.GetAttribute("textContent"));
            }
            Console.WriteLine(prices[0]);
            Console.WriteLine(prices[1]);
            Console.WriteLine(prices[2]);
            Console.WriteLine(prices[3]);
            Console.WriteLine(prices[4]); 
            Console.WriteLine(prices[5]);


Beantwortet von –
KunduK


Antwort geprüft von –
Timothy Miller (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like