2017-08-23 186 views
1

我試着在下面的腳本中執行Cefsharp來點擊一個DIV元素,但不能工作。爲什麼element.click()在Cefsharp中不起作用?

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); 
} 

我在這裏發現了類似的線程,有類似於我的問題,但沒有答案工作。

我想用基礎的解決方案,就像我在Java中沒有,但我需要的瀏覽器可以嵌入我的應用程序裏面,我不能使用無頭的瀏覽器,因爲該網站,其中我想自動化需要QR碼認證。

是否可以使用鉻網絡驅動程序來控制Cefsharp?如果可能的話,任何人都可以爲我發光? (告訴我它的鏈接)。

下面是我在Java代碼中,使用Chrome網絡驅動程序,它像魅力

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太,以找出是否有另一種嵌入式瀏覽器,但我還沒有得到時間來測試他們(任何建議將不勝感激)。

感謝

回答

1

好吧,

我設法解決了這個,從這個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); 
    } 
} 
})();"; 

,我設法點擊未讀郵件。

相關問題