cefsharp网页模拟点击

Cefsharp执行模拟点击以下网页

img


网页代码如下

<a id="gvList_ctl02_HyperLink1" title="已学习 1.0%" class="courseware-list-reed" href="javascript:w("https://wcs1.shawcoder.xyz/ctrjd/play_pc/playverif_pc.html?t=aa6506fc78a048b9ade3e9c805863a0a&courseLabel=wlxy&courseId=7fa4d191fdbc47ea95db7b02f0336ca4");">继续学习a>

为什么下面这段vb.net代码执行模拟点击该元素会不成功呢?

browser.EvaluateScriptAsPromiseAsync("document.getElementById('gvList_ctl02_HyperLink1').click();")

另外我试了 browser.GetBrowserHost().SendMouseClickEvent,代码如下,也同样不成功

Dim js As String =
"(function () {
    var bnt = document.getElementById('gvList_ctl02_HyperLink1');
    bnt.focus();
    var bntRect = bnt.getBoundingClientRect();
    return JSON.stringify({ x: bntRect.left, y: bntRect.top });
})();"
        Dim js_task As Task(Of JavascriptResponse) = browser.EvaluateScriptAsync(js, timeout:=Nothing)
        js_task.Wait() '阻塞等待task任务结束
        ‘///此处略过部分代码,获取到坐标px、py
        browser.GetBrowserHost().SendMouseClickEvent(px, py, MouseButtonType.Left, True, 1, CefEventFlags.None)
        browser.GetBrowserHost().SendMouseClickEvent(px, py, MouseButtonType.Left, False, 1, CefEventFlags.None)

求解答一下困惑,怎么模拟点击该元素,用C#或vb.net都可以

从代码来看,通过坐标和通过id触发点击事件都失败了,是否有iframe嵌套的情况呢?
另一种思路:链接中调用了w()方法,可以考虑看看w()方法中的内容,直接通过js调用,绕开点击事件。

这个类似问题我碰到过我是c#的 ,但逻辑应该差不多你可以试试:js模拟点击时设置个timeout延迟执行 因为js执行的的时候 页面可能还没完全渲染加载完毕,执行无效了

await browser.MainFrame.EvaluateScriptAsync(" setTimeout(function(){ $('.btn-upload').click();},10000);");//10秒后运行页面上js的方法

【目前暂未联想到最完美的答案,只能提供些许思路灵感】
常见的模拟点击的几种方式:
document.getElementsByClassName('btn_addtocart')[0].click();
document.querySelector('.btn_addtocart').click();
document.getElementsByClassName('btn_addtocart')[0].InvokeMember("click");
另外,我觉得这边博文应该可以给你一些灵感:https://blog.csdn.net/qq_25744257/article/details/83861666
【博文主要讲C# 嵌套浏览器与网页交互】

img