带有Chrome驱动程序的C#selenium-无法执行多个异步请求,而且Puppeter sharp比selenium慢
我正在开发一个C#MVC应用程序,在那里我必须刮取另一个网站供内部使用。使用selenium,我可以成功登录网站,但在搜索页面上,有几个Ajax(Xhr)请求,在我的C#代码中处理它们需要相当长的时间,因为请求排队并逐个执行 我试图实现线程,但我认为selenium使用单个实例来处理所有请求 包含会话非常重要,否则将无法获取结果 是否有任何方法可以使selenium在不丢失会话或创建新实例的情况下异步处理每个请求(因为我必须加载会话并重定向到以前的URL,这将花费更多时间并消耗更多内存) 我正在使用以下代码:`带有Chrome驱动程序的C#selenium-无法执行多个异步请求,而且Puppeter sharp比selenium慢,c#,selenium,selenium-chromedriver,puppeteer-sharp,C#,Selenium,Selenium Chromedriver,Puppeteer Sharp,我正在开发一个C#MVC应用程序,在那里我必须刮取另一个网站供内部使用。使用selenium,我可以成功登录网站,但在搜索页面上,有几个Ajax(Xhr)请求,在我的C#代码中处理它们需要相当长的时间,因为请求排队并逐个执行 我试图实现线程,但我认为selenium使用单个实例来处理所有请求 包含会话非常重要,否则将无法获取结果 是否有任何方法可以使selenium在不丢失会话或创建新实例的情况下异步处理每个请求(因为我必须加载会话并重定向到以前的URL,这将花费更多时间并消耗更多内存) 我正在
ChromeDriver _driver = (ChromeDriver)System.Web.HttpContext.Current.Session["ChromeDriver"];
if (_driver != null)
{
string lastTabURL = _driver.Url;
_driver.Manage().Timeouts().AsynchronousJavaScript = System.TimeSpan.FromSeconds(timeoutInSec);
responseText = (String)((IJavaScriptExecutor)_driver).ExecuteAsyncScript(script2);
Debug.WriteLine("-- Response 1 Feteched: url: " + url + ", Started: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}`
在这段代码中,我从会话中检索Chrome驱动程序,然后尝试发出xHttp请求以获取结果,但是如果任何请求需要时间,那么其他请求将等待该时间,然后执行它们,以此类推
比较硒元素与木偶艺人的区别:
我调试了Seleniun(带Chrome驱动程序的C#)和PuppeterSharep(C#)的代码,发现Seleniun获取URL需要0.4秒,而相同URL的PuppeterSharep需要2.1秒。
但我发现很多帖子都提到木偶演员比硒快得多。我想,与木偶艺人相比,有nodeJs的木偶艺人可能要快得多
我还有一个问题,当使用Selenium的Chrome驱动程序只有3到4个实例时,刮取一个网页的所有请求大约需要35秒,但当用户实例增加时,我的代码会分配单独的Chrome驱动程序实例,对于同一个请求大约需要1.5到2分钟有没有办法处理这个问题?
谢谢如果您所做的只是发出javascript请求,那么您可能根本不需要Selenium。你可能只需要像Postman这样的东西。你明白了吗?如果你所做的只是发出javascript请求,那么你可能根本不需要Selenium。你可能只想要像邮递员一样的东西……你明白了吗?