【问题标题】:TChromium mouse clickTChromium 鼠标点击
【发布时间】:2018-05-29 02:15:50
【问题描述】:

我想模拟鼠标点击页面。我在 Delphi 中使用 TChromium。

我尝试了以下代码,但没有成功。

code := 'document.getElementById(_2lkdt).click();';
Chromium1.Browser.MainFrame.ExecuteJavaScript(Code, 'about:blank', 0);

页面按钮是这样的:

<button class="_2lkdt">
<span data-icon="send" class="">
    <svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
        <path fill="#263238" fill-opacity=".45" d="M1.101 21.757L23.8 12.028 1.101 2.3l.011 7.912 13.623 1.816-13.623 1.817-.011 7.912z"></path>
    </svg>
</span>

【问题讨论】:

  • “它不起作用”不起作用。

标签: delphi tchromium


【解决方案1】:

解决方案:

使用document.getElementsByClassName()

示例:

HTML 部分 (button_tchromium.html)。我已经为测试目的定义了类。

<html>
    <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <style>
    ._2lkdt {
        border: 1px solid black;
        margin: 25px;
    }
    </style>
    </head>
    <body>

    <button onclick="alert('I am clicked');" class="_2lkdt">
    <span data-icon="send" class="">
        <svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
            <path fill="#263238" fill-opacity=".45" d="M1.101 21.757L23.8 12.028 1.101 2.3l.011 7.912 13.623 1.816-13.623 1.817-.011 7.912z"></path>
        </svg>
    </span>

    </body>
</html>

德尔福部分:

为了这个测试,我在一个表单上使用了两个按钮,一个用于加载 html 文件,另一个用于执行 javascript。只需检查 getElementsByClassName() 浏览器支持即可。

procedure TForm1.btnExecuteClick(Sender: TObject);
var
   code: string;
   frame: ICefFrame;
begin
   code := 'var items = document.getElementsByClassName("_2lkdt"); '+
           'for (var i = 0; i < items.length; i++) { ' +
              'if (items[i].nodeName.toLowerCase() === "button") {' +
                 'items[i].click(); ' +
              '}' +
           '}';
   frame := Chromium1.Browser.MainFrame;
   frame.ExecuteJavaScript(code, frame.Url, 0);
end;

注意事项:

使用 Delphi7 和 TChromium(Delphi Chromium Embeded,dcef3-2378 分支)测试。

【讨论】:

  • 感谢您的回复,但我无法访问 html。调试页面时,我得到了代码:
  • @WilsonJr 更新示例。
  • 嗨!仅在 Delphi xe7 中更改: frame := ChromiumWindow1.ChromiumBrowser.Browser.MainFrame;有用!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 2014-01-15
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多