[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
ループの後。 以下はコードの更新バージョンです。
C#
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]
コメント