【问题标题】:Ext JS concealing text field contents from HTML and SeleniumExt JS 从 HTML 和 Selenium 隐藏文本字段内容
【发布时间】:2011-09-01 19:02:31
【问题描述】:

我一直在编写一个使用大量 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>

请注意,标签“用户名:”按预期显示在 HTML 中,但文本字段本身没有任何内容。我怀疑一个 javascript 调用正在获取并显示文本字段中的文本,但我对 ExtJS 一点也不熟悉。我检查了this post,但它不适用于获取文本,主要是更改 ID 问题。所以,我想了解如何弄清楚正在调用什么脚本,以及如何使用 executeScript 来获取文本字段文本。我可以用 Selenium 在字段中输入文本,用 Selenium 保存它,然后通过眼球在页面上看到它,所以我没有遇到 Selenium 代码本身定位元素的问题。

谢谢, 萨布丽娜

【问题讨论】:

    标签: javascript selenium selenium-webdriver


    【解决方案1】:

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

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

    通过元素的名称,我得到了 id(无论那天是什么),然后我调用 executeScript 来找出文本字段的值是什么。它缺乏优雅,但 ExtJS 并不提倡优雅。

    【讨论】:

      【解决方案2】:

      字段用户名必须有一个值属性。因此,在 firebug 中,选择 Username 字段,然后在右侧选择 DOM 选项。必须有一个具有用户名的值属性。试试下面的方法,假设你的 WebElement 是用户名。

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

      【讨论】:

      • 显然 ExtJs 是“特殊的”。即使在 DOM 中,Firebug 中也没有这样的值字段。我看了,真的!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多