0
我想创建一个框架,我想要找到一个webelement是否隐藏或没有对web元素执行操作之前。Selenium - 无法找到隐藏的元素
我有密码字段,它是隐藏的,当我查询输入标签有以下行
Isvisible1 = (string)js1.ExecuteScript("return (window.getComputedStyle?window.getComputedStyle(arguments[0], null):arguments[0].currentStyle).visibility;", myCurElement);
Isvisible2 = (string)js1.ExecuteScript("return (window.getComputedStyle(arguments[0], null).getPropertyValue('display'));", myCurElement);
Isvisible3 = (bool)js1.ExecuteScript("return !(arguments[0].offsetHeight <= 1);", myCurElement);
我让所有的值表明它的结构如下
<div class=hidepassword>
<input password field >
<div>
可见。
后来才知道前面div有的类是让输入看不见的。 我试图让类的.css文件中提供的溢出值hidepassword
但不幸的是,类hidepassword有很多css值,当我使用下面的javascript函数时,我是就能得到的只有它的CSS价值的
public string getStyle(string ClassName)
{
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
return (String)js.ExecuteScript(
"function getStyle(ClassName) {" +
"var styleSheets = window.document.styleSheets;" +
"var styleSheetsLength = styleSheets.length;" +
"for (var i = 0; i < styleSheetsLength; i++)" +
"{" +
" var classes = styleSheets[i].rules || styleSheets[i].cssRules;" +
" if (!classes)" +
" continue;" +
" var classesLength = classes.length;" +
" for (var x = 0; x < classesLength; x++)" +
" {" +
" if (classes[x].selectorText == ClassName)" +
" {" +
" var ret;" +
" if (classes[x].cssText)" +
" {" +
" ret = classes[x].cssText;" +
" }" +
" else" +
" {" +
" ret = classes[x].style.cssText;" +
" }" +
" if (ret.indexOf(classes[x].selectorText) == -1)" +
" {" +
" ret = classes[x].selectorText + ret ;" +
" }" +
" return ret;" +
" }" +
" }" +
"}" +
"}return getStyle(arguments[0]);", ClassName);
}
有没有办法让基于该类的CSS值的特定类名称的所有的CSS值,然后,我们就可以拨打电话是否元素是可见的或不可见的。 ?
在此先感谢您的所有帮助。
感谢您的评论。这不适用于我的情况。尽管元素不可见,Selenium却告诉它它是可见的。 –
@Rajan,你能告诉我浏览器开发工具中div元素的'display'的计算样式值吗?你能分享你的发现,它控制了div或input元素的可见性, – yong