【问题标题】:Get data from ExtJS grid row using selenium使用 selenium 从 ExtJS 网格行获取数据
【发布时间】:2017-06-01 09:18:54
【问题描述】:

目前有几个链接可以帮助完成这项任务:general(1) 和 specific(2) 已接近。

但是(1)不包含任何开头的代码,(2)只包含js one-liner。

我的问题是如何从 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 和 selenium webdriver 获取它的值?


UPD

经过一番搜索,发现的细节很少:

  1. 似乎browser.find_element(By.ID, 'element-id')document.getElementById('element-id')null 时根本无法用于 ExtJS 网页(如果有误,请纠正我)
  2. 获取Ext页面的正确方法是Ext.getBody('body-element-id')

但是,selenium.webdriver.support.ui 中的Select 没有这样的方法可以访问正文元素。

因此,问题尚未解决。

【问题讨论】:

标签: javascript python-3.x extjs selenium-webdriver


【解决方案1】:

也许这个示例 java 代码可以帮助你。它不会直接回答您的问题,但您可以轻松地将其转换为 python 并深入了解解决您的问题。

此代码从页面获取 extjs 网格,遍历其行以检查是否有任何包含示例 id(1010294) 的单元格,然后获取相应的行并单击该行上的第 8 个单元格。第 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;
        }       
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 2011-05-22
    • 1970-01-01
    • 2012-01-21
    • 2011-09-07
    • 2016-02-06
    • 1970-01-01
    • 2021-08-21
    相关资源
    最近更新 更多