我的方案是:我使用Selenium WebDriver运行Web自动化来获取数据并在网站中进行动态导航。有时,包含不相关代码的javascript文件加载时间超过1分钟,这会使我的所有代码运行缓慢 - 因为当Selenium WebDriver加载页面时,它会等待加载所有文件。
由于我无法访问更改或修改页面源代码,因此我没有找到解决方法。我注意到附近的解决方法可能有用,就是在我的ChromeDriver中应用扩展程序(如AdBlocker)。
另外,到目前为止我使用AdBlock扩展程序做了什么:
ChromeOptions option = new ChromeOptions();
option.AddExtension("/adblock.crx");
Driver = new ChromeDriver(option);
// Here i need to block the file manually when Chrome window open
// (it is also not a problem)
Driver.Manage().Window.Maximize();
Driver.Navigate().GoToUrl(myUrl);
// Here, any url with a js file that I don't want to download
Selenium WebDriver documentation或Capabilities list中没有提及能够忽略或阻止指定文件加载的方法或函数,例如AdBlock或其他类似的扩展名。所以,我想知道是否可以在不使用外部扩展的情况下这样做。
答案 0 :(得分:1)
WebDriver旨在模拟具有默认设置的浏览器。因为默认情况下,浏览器会加载所有要求的内容,运行所有JavaScript并呈现所有CSS。
根据JavaScript的位置,有一种可能的选择。如果JS文件位于唯一的服务器上(而不是托管您尝试抓取的站点的服务器),则可以在计算机上编辑主机文件,以取消尝试访问该服务器。
您可以在其他地方找到更多/更好的文档,但要点是在主机文件中添加一行,如下所示:
problem_server.com 127.0.0.1
如果符合以下条件,将无法使用
如果是这种情况,你需要坚持像AdBlock一样更精细的东西。