问题描述
我正在使用 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;
这不是最佳做法,但应该会对您有所帮助。