工具是 chrome:
- 例子一:
从

到

let pp = document.getElementsByClassName("filter-dropdown-button");
pp[0].click();
chrome console 代码:
let btn = document.getElementsByClassName("filter-dropdown-button");
// undefined
btn[0].click();
// ƒ click() { [native code] }
Chrome Snippets:
Snippets Support?stackoverflow.com
第二种方法:
function dispatch(el, type){
try{
var evt = document.createEvent('Event');
evt.initEvent(type,true,true);
el.dispatchEvent(evt);
}catch(e){alert(e)};
}
var btn1 = document.getElementsByClassName("filter-dropdown-button")[0];
dispatch(btn1, 'click');
- 例子 2 : 选中与取消选中 tag: array
function dispatch(el, type){
try{
var evt = document.createEvent('Event');
evt.initEvent(type,true,true);
el.dispatchEvent(evt);
}catch(e){alert(e)};
}
var btn1 = document.getElementsByClassName("filter-dropdown-menu-item")[0];
dispatch(btn1, 'click');
选中


取消选中

- 例子 3, 选中 tag : Tree
function dispatch(el, type){
try{
var evt = document.createEvent('Event');
evt.initEvent(type,true,true);
el.dispatchEvent(evt);
}catch(e){alert(e)};
}
var divs = document.getElementsByClassName("filter-dropdown-menu-item");
console.log(divs.length);
for (var i = 0; i < divs.length; i++){
console.log(divs[i].children.length);
console.log(divs[i].children[1]);
if (divs[i].children[1].textContent == "Tree"){
dispatch(divs[i], 'click');
break;
}
}
通过查找标签的名字,找到具体是哪一个 tag,
然后模拟点击

所谓类型错误:
Uncaught TypeError: Cannot read property of undefinedUncaught TypeError: Cannot read property of undefined In JavaScriptnet-informations.com
JavaScript TypeError is thrown when an operand or argument passed to a function is incompatible with the type expected by that operator or function. This error occurs in Chrome Browser when you read a property or call a method on an undefined object . There are a few variations of this error depending on the property you are trying to access. Sometimes instead of undefined it will say null.

浏览器自动化操作大体分为两步——定位和操作,
而其中最重要的是定位,
因为定位是最困难的
并且只有定位到了想要的位置才能进行后续的操作。