使用Selenium测试只读文本框

时间:2017-01-23 10:58:03

标签: python unit-testing selenium

enter image description here

我想测试一下这个文本框是只读的(无法输入/编辑)。注意:文本框中的值每次都不同。

HTML代码:

Homestead.yaml

我尝试使用以下代码找到文本框:

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

这不起作用 - 我知道is_enabled()不应该在这个上下文中使用。查找文本框时出现超时错误。如果我将ID更改为常规文本框的ID,则测试可以找到它。只要我将其更改为只读ID,就会出现超时错误。

由于

编辑: find_by_id代码:

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

WebDriverWait定义:

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以尝试编写使用 sendkeys()的测试,并检查文本框的值属性是否未更改。

答案 2 :(得分:0)

您应该检查disabled属性,它是一个布尔属性。如果它出现,则应禁用<input>字段。

正如@Andersson所说,assert element.get_attribute('disabled')将是一种在python中检查它的方法。