我编写了两个函数,用于通过XPath和CSS选择器进行点击。
这两个函数在浏览器的开发者控制台中完美运行,但在CEF中部分功能无法正常工作。
- 代码可以在开发者控制台和 CEF 中成功点击简单链接
- 代码可以在开发者控制台中成功点击精确按钮,但是在CEF中却不能点击。因为某种原因它会被忽略...
public void Click(string xpath)
{
var js = "document.evaluate(\"" + xpath + "\", document, null, XPathResult.ANY_TYPE, null).iterateNext().click();";
EvaluateJavascript(js);
}
public void ClickCss(string css)
{
var js = "document.querySelector('"+ css + "').click()";
EvaluateJavascript(js);
}
public async Task EvaluateJavascript(string script)
{
JavascriptResponse javascriptResponse = await Browser.GetMainFrame().EvaluateScriptAsync(script);
if (!javascriptResponse.Success)
{
throw new JavascriptException(javascriptResponse.Message);
}
}
细节:
![enter image description here](https://istack.dev59.com/EH8aW.webp)
![enter image description here](https://istack.dev59.com/rcTSb.webp)
_browser.ClickCss("#upload-container a");
再试一次:同样的JS代码在浏览器开发控制台完美运行,但在CEF中出现问题。
顺便说一下,我已经在Chrome中测试了JS代码。所以WebEngine在两种情况下是相同的。
PS:对我来说还可以模拟将某个特定文件拖放到某个特定的 Web 元素上。但是我没有找到任何关于 Cef、Js 或 JQuery 的相关信息...=(