【问题标题】:How to add IList<IWebElement> in Arrays Selenium如何在数组 Selenium 中添加 IList<IWebElement>
【发布时间】:2015-05-15 08:36:57
【问题描述】:

我是C#selenium 的新手。

这是示例代码,它工作正常,我知道这不是标准的编码方式,但我不知道这个实例的标准代码是什么。

我必须从每个字符串中提取5000-10000个元素,所以有没有最快和标准的代码,我认为我的解决方案会太慢。

IList<IWebElement> ARNum = driver.FindElement(By.XPath("sumXpath1"));
IList<IWebElement> MPNum = driver.FindElement(By.XPath("sumXpath2"));
IList<IWebElement> MGNum = driver.FindElement(By.XPath("sumXpath3"));

int RowARNum=1;
foreach(IWebElement artNum in ARNum) {//for First Column
    RowARNum++;
    XLWorkSheet.Cells(RowARNum, 1) = artNum.Text;
}

int RowMPNum =1;
foreach(IWebElement mpNum in MPNum){ //for Second Column
    RowMPNum++;
    XLWorkSheet.Cells(RowMPNum, 1) = mpNum.Text;
}

int RowMGNum =1;
foreach(IWebElement mgNum in MGNum){ //for Third Column
    RowMGNum++;
    XLWorkSheet.Cells(RowMGNum, 1) = mgNum.Text;
}

【问题讨论】:

  • 这是在做什么 XLWorkSheet.Cells(RowMGNum, 1)?在 Excel 工作表中添加一行?

标签: arrays excel selenium ilist


【解决方案1】:

试试这个,它应该有望加快处理速度。

也许尝试添加StopWatch() 类来计时您的实现与我的比较?

        IList<IWebElement> ARNum = driver.FindElements(By.XPath("sumXpath1"));
        IList<IWebElement> MPNum = driver.FindElements(By.XPath("sumXpath2"));
        IList<IWebElement> MGNum = driver.FindElements(By.XPath("sumXpath3"));

        Parallel.For(0, ARNum.Count(), i =>
        {
            XLWorkSheet.Cells(i, 1) = ARNum[i].Text;
        });

        Parallel.For(0, MPNum.Count(), i =>
        {
            XLWorkSheet.Cells(i, 1) = MPNum[i].Text;
        });

        Parallel.For(0, MGNum.Count(), i =>
        {
            XLWorkSheet.Cells(i, 1) = MGNum[i].Text;
        });

【讨论】:

  • S 用于在 excel 中添加行 @Jamie Rees .....我会试试这个,让你知道,如果你有任何新的建议,请告诉我,用于高速编写 excel。 .谢谢你的回复。
  • 你试过我的建议了吗?
  • S 试过了,我得到下面提到的错误,如果我将索引值 0 更改为 1,它会比我的代码工作得更好,但它会从网页中跳过一个值,有 r 20 个元素,但我得到19 个值。总和建议我使用数组,它可能会给你更快的结果,我不知道如何在这种情况下应用,之后我的页面导航也有挑战。我希望你会支持我。提前致谢。
  • 如果您将其从 0 更改为 1,那么为什么您只获得 19 个结果就可以理解了。这意味着您从 0 的索引开始迭代。我不确定您的例外是什么。请编辑您的原始帖子,告诉我您的异常被抛出的位置。
  • M 得到“HRESULT 异常:0x800A03EC”,我猜行号无效。
【解决方案2】:

请在使用您的代码时检查一下 我收到此错误, System.Runtime.InteropServices.COMException 未被用户代码处理 H结果=-2146827284 消息=来自 HRESULT 的异常:0x800A03EC 来源="" 错误代码=-2146827284 堆栈跟踪: 在 System.RuntimeType.ForwardCallToInvokeMember(字符串成员名称、BindingFlags 标志、对象目标、Int32 [] aWrapperTypes、MessageData 和 msgData) 在 Microsoft.Office.Interop.Excel.Range.set__Default(对象行索引,对象列索引,对象值) 在 CDP_Win.Form1.c__DisplayClass8.b__2(Int32 i) 在 e:\MyProjects\CDP_Win - Copy\CDP_Win\Form1.cs:line 115 在 System.Threading.Tasks.Parallel.c__DisplayClassf`1.b__c() 内部异常: @杰米·里斯,@马克·罗兰兹

【讨论】:

    猜你喜欢
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多