【解決方法】ドロップダウン要素を datagridview 行にプルする

プログラミングQA


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;

コメント

タイトルとURLをコピーしました