2017-01-23 146 views
1

enter image description here測試只讀硒

文本框,我想考這個文本框是隻讀的(無法輸入/編輯)。注意:文本框中的值每次都是不同的。

HTML代碼:

<input type="text" class="form-control" id="system_lan1_mac" value="00:15:8b:00:5f:8e" disabled=""> 

我曾嘗試使用下面的代碼來定位文本框:

def test_a(self): 
     ip = self.find_by_id('system_lan2_mac') 
     self.assertFalse(ip.is_enabled()) 

這不工作 - 我知道is_enabled()是不應該在這方面使用。查找文本框時出現超時錯誤。如果我將ID更改爲常規文本框的ID,測試可以找到它。只要我將其更改爲只讀ID,就會出現超時錯誤。

感謝

編輯: find_by_id代碼:

def find_by_id(self, setting): 
    element = self.wait.until(EC.element_to_be_clickable((By.ID, setting))) 
    return element 

WebDriverWait定義:

cls.wait = WebDriverWait(cls.driver, 10) 
+0

您的選擇器在提供的HTML中使用'id =「system_lan2_mac」'它是'id =「system_lan1_mac」'...'is_enabled()'可以在此上下文中使用 – Andersson

+0

嗨。道歉 - 還有一個system_lan2_mac,該代碼不適用於該框。 – Sithling

+0

你在'self.find_by_id()'中使用'WebdriverWait' +'ExpectedConditions'嗎?如果是這樣,告訴我們這個代碼 – Andersson

回答

3

問題在於您的預期情況:您正在等待,直到被禁用的輸入字段變爲可點擊......在任何情況下,這都不是True。你應該嘗試如下定義self.find_by_id()

def find_by_id(self, setting): 
    element = self.wait.until(EC.presence_of_element_located((By.ID, setting))) 
    return element 
+0

是的,就是這樣 - 非常感謝! – Sithling

0

你可以嘗試編寫使用的SendKeys測試()和che ck 文本框的值屬性未被更改。

+0

感謝您的回覆。我試過了 - 問題是我找不到文本框,所以我無法發送任何密鑰 – Sithling

+0

您是否嘗試通過XPath查找它? – Kenyanke

0

您應該檢查disabled屬性,它是一個布爾屬性。如果存在,您的<input>字段應該被禁用。

As @Andersson說,assert element.get_attribute('disabled')將是一種在python中檢查它的方法。

+0

這不會起作用,因爲1.在當前情況下,不存在包含「disabled」的'class',而是一個'disabled'屬性。 2.這個語法不被'Python'支持...但是,你的觀點可以作爲'assert element.get_attribute('disabled')' – Andersson

+0

Tnx來應用,你是對的,我發佈了這個代碼,而不是基於我的事實上,殘疾人是其中一類,我的錯誤。 – acikojevic