Tôi đang phát triển bot web bằng cách sử dụng điều khiển WinForms WebBrowser. Tất cả mọi thứ đang làm việc tốt ngoại trừ click()
cuộc gọi thứ hai trong đoạn mã sau:JQuery nhấp() trên thẻ liên kết không kích hoạt từ tập lệnh được chèn bên trong điều khiển WebBrowser
function SaveRecordClick() {
try {
var menuButton = $('#s_at_m_4');
menuButton.click(); //<-- This is working
var x = $('#s_at_m_4-menu li')[5];
var saveLink = $(x).find('a')[0];
if (saveLink != null){
saveLink.click(); //<-- This is not working
return "1";
}
}
catch (err) {
alert(err.message);
}
return "0";
}
saveLink
không phải là null. Tôi biết điều này vì tôi đã đặt một cuộc gọi alert()
bên trong điều kiện.
đang cập nhật với các giải pháp đề nghị
function SaveRecordClick() {
try {
var menuButton = $('#s_at_m_4');
menuButton.click();
var x = $('#s_at_m_4-menu li').eq(5);
var saveLink = x.find('a').eq(0);
if (saveLink != null) {
alert(saveLink.html());
saveLink.click();
return "1";
}
}
catch (err) {
alert(err.message);
}
return "0";
}
Nhưng vẫn cùng một vấn đề. 'alert()' đang hoạt động tốt nhưng html()
hiển thị văn bản bên trong thay vì HTML của neo.
HTML Mã
<li data-caption="Save Record [Ctrl+S]" class="sbui-appletmenu-item ui-menu-item" role="presentation">
<a href="javascript:void(0)" aria-disabled="false" class="ui-corner-all" id="ui-id-254" tabindex="-1" role="menuitem">Save Record [Ctrl+S]</a>
</li>
ID
của thẻ neo được tự động tạo ra.
Ngoài ra, click()
đang kích hoạt khi mã giống nhau được thực thi từ Bảng điều khiển của Google Chrome. Vì vậy, nó có thể là vấn đề với điều khiển WebBrowser?
Cập nhật
Tôi nghĩ rằng chàng trai của nó là một vấn đề với sự kiểm soát webrowser mà thừa hưởng trình duyệt Internet Explorer. Vì vậy, bây giờ tôi đang chuyển sang kiểm soát trình duyệt khác và kiểm tra mã trên đó. Sẽ cho bạn biết nếu nó hoạt động ở đó.
Bạn đang mong đợi saveLink.click() để làm gì? Hãy nhớ, saveLink không có đối tượng jQuery. Nó là Element vì bạn đã thực hiện [0] thay cho eq (0) và nhấn() trên một Element thông thường sẽ không gây ra bất kỳ trình xử lý bấm nào bị ràng buộc với jQuery để thực thi. – Taplar
Đối với những người nói rằng bạn cần phải quấn 'saveLink' trong' $() '. '.click()' là một hàm DOM, nó không phải là ** một hàm jQuery, jQuery có '.click ()' để liên kết một trình xử lý sự kiện với onclick, tức là nó là viết tắt của '.on ("click", ) ' –
@NickA http://api.jquery.com/click/#click Tùy chọn thứ ba của click() thực sự tồn tại trong jQuery cũng vậy.Đó là một bàn tay ngắn để kích hoạt ('click') – Taplar