Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ext JS从HTML和Selenium中隐藏文本字段内容_Javascript_Selenium_Selenium Webdriver - Fatal编程技术网

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

Javascript Ext JS从HTML和Selenium中隐藏文本字段内容,javascript,selenium,selenium-webdriver,Javascript,Selenium,Selenium Webdriver,我一直在编写一个使用大量ExtJS的应用程序的测试自动化(使用Selenium2Java,Firefox3.6)。我已经能够很好地处理强大的变形元素ID,但有一页的代码行为让我感到困惑。有一个可以设置用户名的文本字段。只有单击“编辑”按钮,Firebug才能找到文本字段。如果输入并保存文本,则文本在页面上可见,但不会出现在HTML代码中的任何位置。即使再次单击“编辑”按钮以访问文本字段,我也无法获取文本字段的值。这是编辑模式下标签和文本字段的代码: <div class="x-f

我一直在编写一个使用大量ExtJS的应用程序的测试自动化(使用Selenium2Java,Firefox3.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中,但文本字段本身没有显示任何内容。我怀疑javascript调用正在获取并显示文本字段中的文本,但我对ExtJS一点也不熟悉。我签出了,但它不适用于获取文本,主要是更改ID的问题。因此,我想了解如何找出调用的脚本,以及如何使用executeScript获取文本字段文本。我可以使用Selenium在字段中输入文本,使用Selenium保存文本,并在页面上通过眼球查看文本,因此Selenium代码本身定位元素时不会出现问题

谢谢,
Sabrina

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

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

我仍然不知道如何确定调用的脚本,但在一位有帮助的同事的建议下,我想出了以下解决方法:

String userid=driver.findElementByName("interfaceUsername").getAttribute("id");
String username=(String)js.executeScript("return Ext.getCmp('"+userid+"').getValue()");
通过元素的名称,我得到了id(无论那天是什么),然后调用executeScript来找出文本字段值是什么。它缺乏优雅,但ExtJS并不提倡优雅。

显然ExtJS是“特别的”。Firebug中甚至在DOM中也没有这样的值字段。我看了,真的!