如何将 Get.Attribute(src) 值添加到 List<string> 或者我是否将值添加到其他列表方法 c#?

问题描述

我正在使用 C# selenium 进行编码。我需要你的帮助。我可以找到一个属性 src 并且可以编写它。但是我需要将这些值添加到现有列表中,因为我将使用它来将这些值添加数据库中。但是当我运行提供的代码时,它从未更新列表,因此它始终为空。

// FIND ELEMENT WHICH WILL BE USE FOR GET.ATTRIBUTE(SRC)
IReadOnlyCollection<IWebElement> imageelements = driver.FindElements(By.CssSelector("div.product-slide"));
List<IWebElement> elements = new List<IWebElement>(imageelements) ;

int a = elements.Count;
string b = Convert.ToString(a);
label5.Text = b;

// LIST FOR STORE THE GET.ATTRIBUTE VALUES
List<string> srclist = new List<string>();
int c = srclist.Count;

int i = 1;
foreach (IWebElement element in elements)
{
    // GET ATRRIBUTE(SRC) OF ELEMENT
    var imagetag = element.FindElement (By.TagName("img"));
    string imagesrc = imagetag.GetAttribute("src");
    
    Thread.Sleep(1000);
    // ADDING VALUES TO LIST ------- IT IS MY PROBLEM: VALUES NOT ADDING TO LIST
    srclist.Add(imagesrc);

    label6.Text = "src  " + imagesrc + "   " + c;
    Thread.Sleep(1000);

    label5.Text = "src islenir" + i;
    
    i++;
    if (a == i) break;
}

label6.Text = ">>>>>" + c;

编辑

string currenturl = driver.Url;
        // item Name
        var itemName = driver.FindElement(By.CssSelector(".pr-new-br")).Text;
        // item Price
        var itemPrice = driver.FindElement(By.ClassName("prc-dsc")).Text;
        label2.Text = itemName + itemPrice;

        // FIND ELEMENT WHICH WILL BE USE FOR GET.ATTRIBUTE(SRC)
        IReadOnlyCollection<IWebElement> imageelements = driver.FindElements(By.CssSelector("div.product-slide"));
        List<IWebElement> elements = new List<IWebElement>(imageelements) ;
        
        int a = elements.Count;
        string b = Convert.ToString(a);
        label5.Text = b;

        
        // LIST FOR STORE THE GET.ATTRIBUTE VALUES
        List<string> srclist = new List<string>();
        int c = srclist.Count;

        int i = 1;
        foreach (IWebElement element in elements)
        {
            
            // GET ATRRIBUTE(SRC) OF ELEMENT
            var imagetag = element.FindElement (By.TagName("img"));
            string imagesrc = imagetag.GetAttribute("src");
            
            
            Thread.Sleep(1000);
            // ADDING VALUES TO LIST ------- IT IS MY PROBLEM: VALUES NOT ADDING TO LIST
            srclist.Add(imagesrc);

            label6.Text = "src  " + imagesrc + "   " + c;

            Thread.Sleep(1000);

            label5.Text = "src islenir" + i;
            
            i++;
            if (a == i) break;
        }
        int gg = srclist.Count;
        label6.Text = ">>>>>" + gg;



        string combinsrc = string.Join(",",srclist.ToArray());







        string connetionstring = @"Data Source=(LocalDB)\MSsqlLocalDB;AttachDbFilename=D:\vsss\veri\veri\excel\veridatabase.mdf;Integrated Security=True";
        con = new sqlConnection(connetionstring);
        cmd = new sqlCommand();
        cmd.Connection = con;
        // INSERT INTO DATABASE === ALL CORRECTLY INSERTING JUST ---COMBINSRC--- VALUES NOT INSERT
        cmd.CommandText = "INSERT INTO urun (ismi,fiyati,link,hiperlink ) VALUES ('" + itemName + "','" + itemPrice + "','" + currenturl + "','" + combinsrc + "')";
        label5.Text = "src alindi";
        Thread.Sleep(2000);
        con.open();
        cmd.ExecuteNonQuery();

解决方法

我可以理解您的问题,您认为 srclist 永远不会更新,因为您的变量 c 始终是 0。这是假定的行为,因为您通过计算空(刚刚创建的)List 中的元素来设置它的值,并且永远不会更新它。 解决方案很简单,因此您只需在 srclist.Add(imagesrc); 后添加以下代码行:

c = srclist.Count;

这不是最佳做法,但应该会对您有所帮助。