2017-01-23 104 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