[ad_1]
I want to pull all the items in the drop-down menu one by one into the datagridview rows using Selenium in C#. Can you help me on this issue?
ما حاولت:
لقد حاولت الرموز التالية.
I tried the code below, but these codes pull all elements into one line. <pre lang="C#"> List<IWebElement> selectElements = drv.FindElements(By.Id("dersler")); foreach (IWebElement select in selectElements) { var selectElement = new SelectElement(select); List<string> lst = new List<string>(); lst.Add(select.Text); DataTable dt = new DataTable(); DataColumn dtcol = new DataColumn(select.Text); dt.Columns.Add(dtcol); for (int i = 0; i < lst.Count; i++) { dataGridView1.DataSource = dt; } }
الحل 1
وفقًا لمقتطف الشفرة، هناك بعض المشكلات التي قد تؤدي إلى السلوك غير المتوقع. أنت تقوم بإنشاء DataTable
داخل الحلقة، مما يؤدي إلى إعادة ضبطها مع كل تكرار. لمعالجة هذه المشكلة، قم بنقل DataTable
إنشاء خارج الحلقة وتعيين DataTable
كما DataSource
بعد الحلقة. فيما يلي الإصدار المحدث من التعليمات البرمجية الخاصة بك:
ج #
List<IWebElement> selectElements = drv.FindElements(By.Id("dersler")); // Create DataTable outside the loop to avoid resetting it in each iteration DataTable dt = new DataTable(); foreach (IWebElement select in selectElements) { var selectElement = new SelectElement(select); // Create a new column for each dropdown DataColumn dtcol = new DataColumn(selectElement.Text); dt.Columns.Add(dtcol); // Create a new row for each option in the dropdown foreach (IWebElement option in selectElement.Options) { DataRow row = dt.NewRow(); row[selectElement.Text] = option.Text; dt.Rows.Add(row); } } // Set the DataTable as the DataSource after the loop dataGridView1.DataSource = dt;
[ad_2]
コメント