JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.querySelectorALL("span[data-value='CNStockPC']")")[1].classList.add("focused")
给这个span添加一个focused的class。
--------------------------------------------
javascript中的几个有用定位
1. document.querySelectorAll("span[data-value='CN']")[1].parentElement
找到元素后往上找到它的父类元素
2. document.querySelectorAll("span[data-value='CN']")[1].closest(".cdk-abc")
往上找class为.cdk-abc的元素的最近元素
----------------------
document.querySelector(selector)
从整个文档中查找第一个匹配 CSS 选择器的元素,返回单个元素(无匹配则返回 null)。
例:document.querySelector('div.className') 找第一个带指定类的 div。
document.querySelectorAll(selector)
从整个文档中查找所有匹配 CSS 选择器的元素,返回类数组(NodeList)。
例:document.querySelectorAll('ul li') 找所有 ul 下的 li 元素。
element.closest(selector)
从当前元素开始,向上遍历 DOM 树(包括自身),查找最近的一个匹配选择器的祖先元素,返回该元素(无匹配则返回 null)。
例:child.closest('.parent') 从子元素找最近的带 parent 类的祖先。
element.querySelector(selector)
在当前元素的子节点中,查找第一个匹配选择器的元素(仅搜索后代,不包括自身)。
例:container.querySelector('span.active') 在容器内找第一个激活的 span。
element.querySelectorAll(selector)
在当前元素的子节点中,查找所有匹配选择器的元素,返回 NodeList。
例:list.querySelectorAll('li:nth-child(odd)') 找列表中所有奇数位置的 li。
element.matches(selector)
判断当前元素是否匹配指定选择器,返回布尔值(true/false)。
例:el.matches('.active') 检查元素是否有 active 类。
const stickyNav = function(e){
const [entry] = e;
console.log(e);
}
const header = document.querySelector('.header');
const headerObserver = new IntersectionObserver(stickyNav,{
root:null,
threshold:0
});
headerObserver.observe(header);
1. 创建一个intersectionObserver()对象,里面有两个参数,方法和选项
const headerObserver = new IntersectionObserver(Observerfunction,Option});
const Oberverfunction = function(e){
const entry = e[0]; 从数据e中提取第一个
console.log(e);
}
const Option = {root: null,threshold: 0}
root:null指默认的根元素是视口viewport
threshold: 0 定义触发回调的交叉比例阈值(范围0-1), 0当目标元素刚进入根元素或者刚离开根元素时,立刻触发回调函数observerfunction
2. 运行此对象,传入需要观察的对象
headerObserver(header)