<PackageReference Include="PuppeteerSharp" Version="11.0.4" />
使用的是XPath 键盘F12->Elements->鼠标右键->Copy->Copy Full XPath
using PuppeteerSharp;
using System.Text.Json.Nodes;
await new BrowserFetcher().DownloadAsync();
var browser = await Puppeteer.LaunchAsync(new LaunchOptions()
{
Headless = false,
UserDataDir = "Charles",
Args = ["--no-sandbox"],
Browser = SupportedBrowser.Chrome,
});
var page = await browser.NewPageAsync();
AppDomain.CurrentDomain.ProcessExit += new EventHandler((sender, e) =>
{
var o = browser.CloseAsync();
});
//await page.SetUserAgentAsync("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3");
await page.SetViewportAsync(new ViewPortOptions
{
Width = 1000,
Height = 1000,
IsMobile = false,
IsLandscape = false,
});
await page.GoToAsync("https://example.com/index.html");
await Task.Delay(1200);
var curPageTitle = await page.GetTitleAsync();
if(curPageTitle.StartsWith("登录"))
{
var accountBox = await page.XPathAsync("/html/body/div[1]/div[1]/div[2]/div[2]/div[2]/div[2]/div/form/div[1]/div/div/div[1]/input");
var passwordBox = await page.XPathAsync("/html/body/div[1]/div[1]/div[2]/div[2]/div[2]/div[2]/div/form/div[2]/div/div/div/input");
var loginBtn = await page.XPathAsync("/html/body/div[1]/div[1]/div[2]/div[2]/div[2]/div[2]/div/form/div[4]/div/button");
await accountBox.First().TypeAsync($"2507ZMY");
await passwordBox.First().TypeAsync($"a123456");
await loginBtn.First().TapAsync();
}
await Task.Delay(1400);
var jsText = @"$.ajax({url: 'https://example.com',type: 'GET'})";
var dynamicData = await page
.EvaluateExpressionAsync<dynamic>(jsText);
var respString = dynamicData.ToString();
Console.WriteLine(respString);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
await page.CloseAsync();