2017-06-01 57 views
1

当前有几个链接假设可以帮助完成此任务:general(1)和specific(2)已接近。使用硒从ExtJS网格行获取数据

但是(1)不包含任何代码开始和(2)只包含js单行。

我的问题是如何从extjs生成的行单元格中获取值?

举例来说,我已经排元素

div#ext-gen-list-057-r.x-grid3-row.grid-rowcolor-black.grid-fontweight-normal.grid-fontstyle-normal.recordListRow.TableEvenRow.x-grid3-row-first.x-grid3-row-focus 

,其中细胞这样表示

td.x-grid3-col.x-grid3-cell.x-grid3-td-0.x-grid3-cell-first 

如何它使用python和硒的webdriver值我得到什么?


UPD

某些搜索后有一些细节透露:

  1. 好像browser.find_element(By.ID, 'element-id')根本不会对ExtJS的网页尽快上班document.getElementById('element-id')null(纠正我,如果它是错误)
  2. 获取Ext页面的正确方法是Ext.getBody('body-element-id')

但是,selenium.webdriver.support.uiSelectSelect没有这样的方法,允许访问主体元素。

因此,问题尚未解决。

+0

OT最简单的测试ExtJS应用程序的方法https://www.sencha.com/products/test/ – pagep

回答

0

可能是这个示例java代码可以帮助你。它并不直接回答你的问题,但你可以很容易地将它转换为python,并深入了解解决你的问题。

此代码从页面获取extjs网格,遍历其行以检查是否存在包含示例id(1010294)的任何单元格,然后获取相应的行并单击该行的第8个单元格。第八个单元格包含一个点击按钮。

WebElement editCustTable = driver.findElement(By.className("x-grid-table")); 
List<WebElement> tableRows = editCustTable.findElements(By.tagName("tr")); 
for (Iterator iterator = tableRows.iterator(); iterator.hasNext();) { 
    WebElement row = (WebElement) iterator.next();    
    // if tr contains id = '1010294'    
    if(row.getAttribute("id").contains("1010294")){ 
     List<WebElement> tds = row.findElements(By.tagName("td")); 
     tds.get(8).click(); 
     break; 
     }  
    }