Taa*_*apo 17 headless chromium
我下载了最新版本的铬,以测试无头功能.
当我跑(作为根,因为我还在测试东西):
./chrome --no-sandbox http://cp7.awardspace.com/speed-test/awardspace-data1mb.zip
Run Code Online (Sandbox Code Playgroud)
在GUI终端中,它打开Chromium并下载文件.
如果我试图无头地运行它,我输入以下内容:
./chrome --no-sandbox --headless http://cp7.awardspace.com/speed-test/awardspace-data1mb.zip
Run Code Online (Sandbox Code Playgroud)
终端输出一些信息,没有窗口打开,但是:我没有在任何地方下载文件.
我一直在寻找互联网和讨论组以获取更多信息,但找不到任何东西.
文件下载是否在Chromium的无头模式下工作?
使用ChromeDriverService和POST会话/ {sessionId} / chromium / send_command
POST的JSON:
{
"cmd": "Page.setDownloadBehavior",
"params": {
"behavior": "allow",
"downloadPath": "C:\\Download\\Path"
}
}
Run Code Online (Sandbox Code Playgroud)
C#解决方案
添加对System.Net.Http的引用,并使用NuGet安装Newtonsoft.JSON。
public static IWebDriver Driver { get; private set; }
public void SetDriver()
{
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("--headless", "--window-size=1920,1080");
var driverService = ChromeDriverService.CreateDefaultService();
Driver = new ChromeDriver(driverService, chromeOptions);
Task.Run(() => AllowHeadlessDownload(driverService));
}
static async Task AllowHeadlessDownload(ChromeDriverService driverService )
{
var jsonContent = new JObject(
new JProperty("cmd", "Page.setDownloadBehavior"),
new JProperty("params",
new JObject(new JObject(
new JProperty("behavior", "allow"),
new JProperty("downloadPath", @"C:\Download\Path")))));
var content = new StringContent(jsonContent.ToString(), Encoding.UTF8, "application/json");
var sessionIdProperty = typeof(ChromeDriver).GetProperty("SessionId");
var sessionId = sessionIdProperty.GetValue(Driver, null) as SessionId;
using (var client = new HttpClient())
{
client.BaseAddress = driverService.ServiceUrl;
var result = await client.PostAsync("session/" + sessionId.ToString() + "/chromium/send_command", content);
var resultContent = await result.Content.ReadAsStringAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16998 次 |
| 最近记录: |