C# Selenium 读取本地Excel文件并测试

来源:互联网 发布:百度软件商店 编辑:程序博客网 时间:2024/05/21 10:52

 

实现效果:选择本地Excel文件,excel名称显示在ComBoBox中,excel内容显示在DataGridView中,点击"Send Web to Test" 按钮,就会进行相关测试。

Form1.cs代码如下:

using System;
using System.Data;
using System.IO;
using System.Windows.Forms;
using Excel;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;


namespace ReadExcel4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        DataSet result = null;
        private void button1_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "Excel Workbook|*.xls", ValidateNames = true })
            {
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    FileStream fs = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
                    IExcelDataReader reader = ExcelReaderFactory.CreateBinaryReader(fs);
                    reader.IsFirstRowAsColumnNames = true;
                    result = reader.AsDataSet();
                    DisplayComboBox.Items.Clear();
                    foreach (DataTable dt in result.Tables)    //选择.xls的excel文件,否则会报错
                    {
                        DisplayComboBox.Items.Add(dt.TableName);
                    }
                    reader.Close();
                }
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            string url = "";
            string value = "";


            int row = dataGridView1.Rows.Count;   //得到总行数
            int column = dataGridView1.Rows[1].Cells.Count;  //得到总列数


            foreach (DataGridViewRow dd in dataGridView1.Rows)
            {
                if (dd.Index < dataGridView1.Rows.Count - 1) //假如共3行,row0,row1,row2,它会从开读三次,但只需要循环row1,row2
                {
                    var driver = new FirefoxDriver();
                    url = dd.Cells[0].Value.ToString();
                    value = dd.Cells[1].Value.ToString();
                    driver.Navigate().GoToUrl(url);
                    driver.FindElement(By.Id("kw")).SendKeys(value);
                    driver.FindElementById("su").Click();
                }
            }
        }
        private void DisplayComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            dataGridView1.DataSource = result.Tables[0];
        }
    }
}






0 0