Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Chrome驱动程序的C#selenium-无法执行多个异步请求,而且Puppeter sharp比selenium慢_C#_Selenium_Selenium Chromedriver_Puppeteer Sharp - Fatal编程技术网

带有Chrome驱动程序的C#selenium-无法执行多个异步请求,而且Puppeter sharp比selenium慢

带有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,这将花费更多时间并消耗更多内存) 我正在

我正在开发一个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。你可能只想要像邮递员一样的东西……你明白了吗?