在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);