为什么 element.click() 在 Cefsharp 中不起作用?
Why element.click() not working in Cefsharp?
我尝试在 Cefsharp 中执行以下脚本以单击 DIV 元素,但无法正常工作。
private static string ClickUnreads = @"(function() {
let chatsEl = document.querySelectorAll('.infinite-list-item');
for (let x = 0; x < chatsEl.length; x++) {
let unread = chatsEl[x].getElementsByClassName('unread');
if (unread.length > 0) {
chatsEl[x].click();
}
}
})();";
public void ClickUnreads()
{
WebBrowser.ExecuteScriptAsync(ClickUnreads);
}
我在这里发现了类似的线程,它们的问题与我的类似,但是 none 的答案有效。
我想使用基于 Selenium 的解决方案,就像我在 Java 中所做的那样,但我需要将浏览器嵌入到我的应用程序中,但我无法使用无头浏览器,因为我要自动化的网站需要二维码验证。
是否可以使用 Chromium 网络驱动程序 来控制 Cefsharp?如果可能的话,任何人都可以为我点亮吗? (给我看看它的 link)。
下面是我在 Java 中的代码,使用 Chrome 网络驱动程序,它像 charm
一样工作
while (true) {
List<WebElement> chatItems = chatsList.findElements(By.className("infinite-list-item"));
for (WebElement el : chatItems) {
WebElement unread = el.findElement(By.className("unread"));
if (unread != null) {
unread.click();
}
}
Thread.sleep(10000);
}
我也检查了这个link,看看是否有另一个可嵌入的浏览器,但我没有时间测试它们(任何建议将不胜感激)。
谢谢
好的,
在这个 thread 的帮助下,我设法解决了这个问题。
所以我把我的js脚本改成了这个
@"(function(x) {
let chatsEl = document.querySelectorAll('.infinite-list-item');
for (let x = 0; x < chatsEl.length; x++) {
let unread = chatsEl[x].getElementsByClassName('unread');
if (unread.length > 0) {
let hoverEvent = document.createEvent ('MouseEvents');
hoverEvent.initEvent ('mouseover', true, true);
unread[0].dispatchEvent (hoverEvent);
let downEvent = document.createEvent ('MouseEvents');
downEvent.initEvent ('mousedown', true, true);
unread[0].dispatchEvent (downEvent);
let clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
unread[0].dispatchEvent (clickEvent);
}
}
})();";
而且我设法点击了未读消息。
我尝试在 Cefsharp 中执行以下脚本以单击 DIV 元素,但无法正常工作。
private static string ClickUnreads = @"(function() {
let chatsEl = document.querySelectorAll('.infinite-list-item');
for (let x = 0; x < chatsEl.length; x++) {
let unread = chatsEl[x].getElementsByClassName('unread');
if (unread.length > 0) {
chatsEl[x].click();
}
}
})();";
public void ClickUnreads()
{
WebBrowser.ExecuteScriptAsync(ClickUnreads);
}
我在这里发现了类似的线程,它们的问题与我的类似,但是 none 的答案有效。
我想使用基于 Selenium 的解决方案,就像我在 Java 中所做的那样,但我需要将浏览器嵌入到我的应用程序中,但我无法使用无头浏览器,因为我要自动化的网站需要二维码验证。
是否可以使用 Chromium 网络驱动程序 来控制 Cefsharp?如果可能的话,任何人都可以为我点亮吗? (给我看看它的 link)。
下面是我在 Java 中的代码,使用 Chrome 网络驱动程序,它像 charm
一样工作while (true) {
List<WebElement> chatItems = chatsList.findElements(By.className("infinite-list-item"));
for (WebElement el : chatItems) {
WebElement unread = el.findElement(By.className("unread"));
if (unread != null) {
unread.click();
}
}
Thread.sleep(10000);
}
我也检查了这个link,看看是否有另一个可嵌入的浏览器,但我没有时间测试它们(任何建议将不胜感激)。
谢谢
好的,
在这个 thread 的帮助下,我设法解决了这个问题。 所以我把我的js脚本改成了这个
@"(function(x) {
let chatsEl = document.querySelectorAll('.infinite-list-item');
for (let x = 0; x < chatsEl.length; x++) {
let unread = chatsEl[x].getElementsByClassName('unread');
if (unread.length > 0) {
let hoverEvent = document.createEvent ('MouseEvents');
hoverEvent.initEvent ('mouseover', true, true);
unread[0].dispatchEvent (hoverEvent);
let downEvent = document.createEvent ('MouseEvents');
downEvent.initEvent ('mousedown', true, true);
unread[0].dispatchEvent (downEvent);
let clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
unread[0].dispatchEvent (clickEvent);
}
}
})();";
而且我设法点击了未读消息。