繁体   English   中英

通过执行 javascript 在 python 中隐藏使用 selenium webdriver 的元素

[英]Hide elements using selenium webdriver in python by executing a javascript

我想通过在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)

上面的工作,但你可以看到有重复的代码。 有没有办法可以简化这个而不是找到每个元素并隐藏它们?

如果每个 class 只有一个 - 我使用 ES<5 来不破坏您的 webdriver:

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";
  }
}

使用以下代码:

js_script = '''\
document.getElementsByClassName('someclass')[0].setAttribute("hidden","");
document.getElementsByClassName('another')[0].setAttribute("hidden","");
document.getElementsByClassName('highlight')[0].setAttribute("hidden","");
document.getElementsByClassName('overlay')[0].setAttribute("hidden","");
 '''
driver.execute_script(js_script)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM