我有多个div,如下所示
<div class="one">send Message</div>
<div class="one">send Message</div>
<div class="one">send Message</div>
我有一个网页,其中有如上所述的发送消息按钮,其中一次只能看到一个按钮。另外两个按钮通过一些javascript代码隐藏。因此,例如,如果第二个按钮可见,我应该只能单击该元素。但是在我的硒代码中,它试图单击第一个隐藏的div并且失败了
driver.findElements(by.className(".one")).then((els) => {
var element = els[index];
element.click();
});
所以基本上我想将下面的javascript代码转换为Selenium nodejs代码,如果有人指导我会有所帮助
var all = document.getElementsByTagName("*");
for (var i = 0, max = all.length; i < max; i++) {
if (isHidden(all[i]))
// hidden
else
// visible
}
function isHidden(el) {
var style = window.getComputedStyle(el);
return ((style.display === 'none') || (style.visibility === 'hidden'))
}
你想点击可见的按钮(就代码而言基本上是一个div(吗?
如果这是你的主要议程,那么你编写的代码将无法找到所需的元素。当您通过元素的类名而不是其可见性来选择元素时。
您的代码将找到所有匹配的类元素。由于它是一个基本的元素选择器,并且所有按钮都具有相同的类,因此它们基本上呈现在页面上。
方法1
driver.findElements(by.className(".one")).then((els) => {
for(var key in els){
var element = els[key];
if(element.isDisplayed()){ //if visible element
element.click();
}
}
});
这里的关键是检查您尝试单击的元素在页面上是否可见。
方法2
通过为目标按钮提供唯一的类。一些类,例如"可点击"或"活动"。因此,使用 Css 选择器选择目标元素将是一个更优化的解决方案。这里的关键是为您的目标元素提供唯一性,使其更具可识别性。
通常许多Java脚本在没有转换的情况下在节点Js中运行。您是否在不转换???的情况下在节点 Js 中尝试过** 记得进口硒