我有多个div,如下所示
<div class="one">send Message</div>
<div class="one">send Message</div>
<div class="one">send Message</div>
我有一个网页,其中有上面的发送消息按钮,其中一次只能看到一个按钮。其他两个按钮通过一些javascript代码隐藏。例如,如果第二个按钮可见,我应该是只能点击那个元素。但在我的selenium代码中,它试图点击第一个隐藏的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'))
}
答案 0 :(得分:0)
通常,许多Java脚本在没有转换的节点Js中运行。 你有没有在转换节点Js尝试它? **记得输入硒
答案 1 :(得分:0)
你想点击按钮(就代码而言基本上是一个div),这是可见的吗?
如果这是您的主要议程,那么您编写的代码将无法找到所需的元素。正如您通过它的类名选择元素而不是它的可见性。
您的代码将找到所有匹配的类元素。因为它是一个基本的元素选择器,所有的按钮都有相同的类,所以它们基本上都在页面上呈现。
driver.findElements(by.className(".one")).then((els) => {
for(var key in els){
var element = els[key];
if(element.isDisplayed()){ //if visible element
element.click();
}
}
});
此处的关键是检查您要点击的元素是否在页面上可见。
通过为目标按钮提供唯一的类。某些课程,例如“可点击”或“有效”。因此,使用Css选择器选择目标元素将是一个更优化的解决方案。这里的关键是让您的目标元素具有唯一性,以便更容易识别。