ExtJS + Selenium:@value什么都没有

时间:2012-06-01 22:21:36

标签: extjs selenium

我使用只读表单并使用

将其加载到控制器中
"popup.down('form').loadRecord(record);"

表单字段定义为

items:[
{
  xtype:'textfield',
  fieldLabel:'Array Id',
  name:'id'
},
{
  xtype:'textfield',
  fieldLabel:'Array Name',
  name:'name'
}
]

值:[ id:10, name: 'testing']

生成的HTML代码为:

<form id = 'arraydevicewindowid'>

  <input type="text" autocomplete="off" class="x-form-field x-form-text" size="20"     name="${array.arrayName}" id="ext-gen1314" readonly="" aria-readonly="true" aria-invalid="false" placeholder="--NA--" role="textbox" aria-describedby="textfield-1260-errorEl" aria-required="false" data-errorqtip="" style="width: 281px; height: 23px;">

</form>

我尝试使用以下xpath从Extjs生成的文本域组件中选择值:

(//div[@id='arraydevicewindowid']//input)[1]//@value

但没有运气。

(//div[@id='arraydevicewindowid']//input)[1]

可以让我选择我想要的文本字段,但@value不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

问题是Selenium无法使用XPath返回HTML元素以外的任何内容。但value属性...是节点的属性,XPath本质上返回一个String。因此,您必须选择正确的元素,然后使用Selenium内置方法获取其值。

使用Selenium IDE:storeValue带来某种魔力。

使用Java + Selenium RC:

// assuming 'selenium' is a healthy instance of Selenium
String value = selenium.getValue("xpath=yourXpath");

使用Java + Selenium WebDriver:

// assuming 'driver' is a healthy instance of WebDriver
String value = driver.findElement(By.xpath('yourXpath')).getAttribute("value");