2016-07-22 123 views
1

我有一個隱藏的輸入文本在我的頁面,我需要取消隱藏它,併爲其鍵入'*'。 Selenium默認情況下不允許您分配鍵或訪問頁面中的隱藏元素,並且帽子是可以理解的,但在這種情況下,我需要訪問該隱藏元素。ExecuteScript不會改變我的元素的可見性 - 元素不可見

js.ExecuteScript("document.getElementById('ctl00_ContentPlaceHolder1_tbIsCaptchaChecked').setAttribute('display', 'flex')"); 

但仍沒有運氣,因爲我得到的錯誤「元素不可見」

這裏是我的完整代碼:

var _driver = new ChromeDriver(); 
var js = _driver as IJavaScriptExecutor; 
js.ExecuteScript("document.getElementById('ctl00_ContentPlaceHolder1_tbIsCaptchaChecked').setAttribute('display', 'flex')"); 
_driver.FindElement(By.CssSelector("input#ctl00_ContentPlaceHolder1_tbIsCaptchaChecked.hiddenRecaptcha")).SendKeys("*"); 
+0

當您在瀏覽器控制檯上手動嘗試此'document.getElementById('ctl00_ContentPlaceHolder1_tbIsCaptchaChecked')。setAttribute('display','flex')'時,元素是否可見? –

+0

難道是executeScript和findelement之間的時間太短,DOM上的複製沒有發生,並且你的元素仍然是不可見的。你有嘗試插入一個等待? –

+0

@TimBourguignon我試過了,我加了10秒但沒有運氣 –

回答

1
我從 IJavaScriptExecutor使用此代碼調用該方法 ExecuteScript

改爲設置樣式屬性:

"document.getElementById('...').style.display = 'flex';" 

請注意,硒被視爲可見,元素也需要有一個大小。