TChromium鼠标点击
TChromium mouse click
我想模拟鼠标点击页面。我在 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>
解法:
使用document.getElementsByClassName()
.
示例:
HTML 部分 (button_tchromium.html)。我已经定义了 class 用于测试目的。
<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>
DELPHI 部分:
为了这个测试,我在一个表单上使用了两个按钮,一个用于加载 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 分支)。
我想模拟鼠标点击页面。我在 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>
解法:
使用document.getElementsByClassName()
.
示例:
HTML 部分 (button_tchromium.html)。我已经定义了 class 用于测试目的。
<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>
DELPHI 部分:
为了这个测试,我在一个表单上使用了两个按钮,一个用于加载 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 分支)。