首页 文章

Ext JS隐藏HTML和Selenium中的文本字段内容

提问于
浏览
0

我一直在编写使用大量ExtJS的应用程序的测试自动化(在Selenium2 Java,Firefox 3.6中) . 我已经能够很好地解决强大的变形元素id,但在一个页面上代码行为让我感到难过 . 有一个文本字段,可以设置用户名 . 在单击编辑按钮之前,它不可单击,然后Firebug可以找到文本字段 . 如果输入文本然后保存,则文本在页面上可见,但它不会出现在HTML代码中的任何位置 . 即使再次单击编辑按钮以使文本字段可访问,我也无法获得文本字段的值 . 这是编辑模式下标签和文本字段的代码:

<div class="x-form-item " tabindex="-1">
<label class="x-form-item-label" style="width: 250px;" for="ext-comp-1022">Interface Username:</label>
<div id="x-form-el-ext-comp-1022" class="x-form-element" style="padding-left: 255px;">
<input id="ext-comp-1022" class=" x-form-text x-form-field " type="text" name="interfaceUsername" autocomplete="off" size="20" style="width: 292px;">
</div>

请注意,标签"Username:"按预期显示在HTML中,但是's nothing for the textfield itself. I' m怀疑正在进行javascript调用并在文本字段中显示文本,但我对ExtJS并不熟悉 . 我检查了this post但它不适用于获取文本,主要是改变ID问题 . 所以,我想了解如何确定调用哪个脚本,以及如何使用executeScript来获取文本域文本 . 我'm able to enter text in the field with Selenium, save it with Selenium, and see it on the page by eyeball so I'没有Selenium代码本身定位元素的问题 .

谢谢,萨布丽娜

2 回答

  • 0

    字段用户名必须有值属性 . 因此,在firebug中,选择Username字段,在右侧选择DOM选项 . 必须有一个具有用户名的value属性 . 尝试类似下面的内容,假设您的WebElement是用户名 .

    String user = username.getAttribute("value");
    
  • 0

    我仍然不知道如何确定调用哪个脚本,但是在一位乐于助人的同事的建议下,我提出了这个解决方法:

    String userid=driver.findElementByName("interfaceUsername").getAttribute("id");
    String username=(String)js.executeScript("return Ext.getCmp('"+userid+"').getValue()");
    

    使用元素的名称我得到id(无论那天是什么)然后我调用executeScript来找出文本字段值是什么 . 它缺乏优雅,但ExtJS并没有促进优雅 .

相关问题