在C#中使用Selenium IE驱动程序快速发布大量文本(10,000行)

所以我现在正在编写这个脚本,它将使用C#中的Selenium Internet Explorer驱动程序自动完成一个简单,单调的任务。

一切都很好,但是在脚本的某一点上它有点慢,我想知道是否有更快的方法可以做我想要的。

问题在于我必须用大量信息填写文本框。 此文本框有时会填充多达10,000行,其中每行不超过20个字符。

但是,以下方法非常慢……

// process sample file using LINQ query var items = File.ReadAllLines(sampleFile).Select(a => a.Split(',').First()); // Process the items to be what we want to add to the textbox var stringBuilder = new StringBuilder(); foreach (var item in items) { stringBuilder.Append(item + Environment.NewLine); } inputTextBox.SendKeys(stringBuilder.ToString()); 

有没有只是将文本框的值设置为我想要的? 或者这是一个瓶颈?

感谢您的时间和耐心!

正如理查德所建议的那样 – 我最终使用了IJavaScriptExecutor

确切的解决方案是在以下代码行中替换对SendKeys的调用:

 inputTextBox.SendKeys(stringBuilder.ToString()); 

使用这行代码:

 ((IJavaScriptExecutor)ieDriver).ExecuteScript("arguments[0].value = arguments[1]", inputTextBox, stringBuilder.ToString()); 

将我的InternetExplorerDriver对象转换为IJavaScriptExecutor接口,以便到达显式实现的接口成员ExecuteScript ,然后使用上面的参数调用该成员就可以了。

为避免使用SendKeys,您可以使用IJavaScriptExecutor直接设置值。 这些方面的东西:

 string javascript = "document.getElementById("bla").value = stringBuilder"; IJavaScriptExecutor js = (IJavaScriptExecutor)Driver; js.ExecuteScript(javascript);