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