如何解决将 Kantu 写给 Puppeteersharp?
我是 Puppeteersharp 的新手,并设法将其连接到现有的 CEFSharp 浏览器对象。我过去曾使用 Kantu (UI.Vision) 进行自动化,但我想制作一个独立的可执行文件来执行此操作。因此,通过使用 Puppeteersharp 和 CEFSharp 浏览器。阅读官方文档后,我仍然不确定如何使用它,尤其是选择器。我目前有以下几点:
InitializeComponent();
var cefSettings = new CefSettings
{
WindowlessRenderingEnabled = true,MultiThreadedMessageLoop = true,BrowserSubprocessPath = System.IO.Path.GetFullPath(@"CefSharp.BrowserSubprocess.exe"),LogSeverity = LogSeverity.Error
};
cefSettings.CachePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\CEF";
cefSettings.CefCommandLineArgs.Add("--disable-pinch","1");
cefSettings.RemoteDebuggingPort = 8050;
Cef.Initialize(cefSettings);
//Cef.GetGlobalCookieManager().DeleteCookies("","");
ChromiumWebBrowser Browser = new ChromiumWebBrowser();
Browser.Address = "www.google.com";
Grid.Children.Add(Browser);
Task.Run(async () =>
{
const string versionUrl = "http://127.0.0.1:8050/json/version";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(versionUrl);
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
var body = await reader.ReadToEndAsync();
var entity = JObject.Parse(body);
var url = entity.GetValue("webSocketDebuggerUrl").ToString();
var browser = await Puppeteer.ConnectAsync(new ConnectOptions { BrowserWSEndpoint = url,SlowMo = 0 });
var pages = await browser.PagesAsync();
var page = pages[0];
await page.GoToAsync("<A website link here>");
*Navigate the website by locating objects and clicking or writing to them*
await browser.CloseAsync();
}
});
我基本上想要实现以下目标,使用 puppeteersharp 的 Kantu (UI.Vision) JSON 文件中的“通过定位对象并单击或写入它们来导航网站”块:
{
"Command": "storeXpathCount","Target": "xpath=//*[@id=\"cf-captcha\"]/div[1]","Value": "Captcha","Description": ""
},{
"Command": "type","Target": "xpath=//*[@id=\"registration-form\"]/div/div[3]/div/div/input","Value": "${!COL2}",{
"Command": "select","Target": "xpath=//*[@id=\"registration-form\"]/div/div[3]/div/div[3]/select","Value": "label=${!COL4}",{
"Command": "click","Target": "id=checkPrivacy","Value": "","Target": "xpath=//*[@id=\"registration-form\"]/div/div[5]/button",{
"Command": "verifyElementPresent","Target": "xpath=//*[@id=\"registration-form\"]/div/div[5]/div","Description": ""
}
所以基本上,如何点击、写入和断言输入框、按钮和下拉框等不同对象的存在。使用多种选择器,如 Xpaths 和 CSS 选择器。如果能有一些好的文档就好了。
提前致谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。