我想通过在python
中执行javascript
来隐藏canvas元素上的元素。
我尝试过以下方法:
def hide_elements():
driver = LiveLibrary.get_webdriver_instance()
js_script = '''\
element1 = document.getElementsByClassName('someclass');
element1[0].style.display = 'none';
element2 = document.getElementsByClassName('another');
element2[0].style.display = 'none';
element3 = document.getElementsByClassName('highlight');
element3[0].style.display = 'none';
element4 = document.getElementsByClassName('overlay');
element4[0].style.display = 'none';
'''
driver.execute_script(js_script)
上面的代码有效,但正如您所看到的,有重复的代码。有没有办法可以简化这个过程,而不是找到每个元素并隐藏它们?
最佳答案
如果每个类只有一个 - 我使用 ES<5 来不破坏你的网络驱动程序:
var cls = ["someclass","another","highlight","overlay"];
for (var i=0;i<cls.length;i++) {
document.querySelector("."+cls[i]).style.display = "none";
}
这可以在浏览器中使用:
[...document.querySelectorAll("[class^=class]")].forEach(ele => ele.style.display = "none");
对于不同的类别:
["someclass","another","highlight","overlay"]
.forEach(cls => [...document.querySelectorAll("."+cls)]
.forEach(ele => ele.style.display = "none"));
对于旧的 JS 版本:
["someclass","another","highlight","overlay"]
.forEach(function(cls) { [...document.querySelectorAll("."+cls)]
.forEach(function(ele) { ele.style.display = "none"})});
甚至更老:
var cls= ["someclass","another","highlight","overlay"];
for (var i=0;i<cls.length;i++) {
var elements = document.querySelectorAll("."+cls[i]);
for (var j=0;j<elements.length;j++) {
elements[j].style.display = "none";
}
}
关于javascript - 通过执行 javascript 在 python 中使用 selenium webdriver 隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58130097/