Javascript 使用selenium从ExtJS网格行获取数据

Javascript 使用selenium从ExtJS网格行获取数据,javascript,python-3.x,extjs,selenium-webdriver,Javascript,Python 3.x,Extjs,Selenium Webdriver,目前有两个链接可以帮助完成此任务:(1)和(2)已接近 但是(1)不包含任何代码,并且(2)只包含一个行程序 我的问题是如何从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-focu

目前有两个链接可以帮助完成此任务:(1)和(2)已接近

但是(1)不包含任何代码,并且(2)只包含一个行程序

我的问题是如何从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和SeleniumWebDriver获取其值


UPD

经过一些搜索后,发现了一些细节:

  • 看起来像是
    浏览器。只要
    document.getElementById('element-ID')
    null
    ,则find_元素(By.ID,'element-ID')
    将不适用于ExtJS网页(如果错误,请更正)
  • 获取Ext页面的正确方法是
    Ext.getBody('body-element-id')
  • 但是,对于
    selenium.webdriver.support.ui
    中的
    Select
    ,没有允许访问主体元素的方法


    因此,这个问题还没有得到解决。

    这个示例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;
            }       
        }
    
    WebElement editCustTable=driver.findElement(By.className(“x-grid-table”);
    List tableRows=editCustTable.findElements(按.tagName(“tr”));
    for(Iterator Iterator=tableRows.Iterator();Iterator.hasNext();){
    WebElement行=(WebElement)迭代器。下一步();
    //如果tr包含id='1010294'
    if(row.getAttribute(“id”)包含(“1010294”)){
    列表tds=行.findElements(按.tagName(“td”));
    获取(8)。单击();
    打破
    }       
    }
    
    这个示例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;
            }       
        }
    
    WebElement editCustTable=driver.findElement(By.className(“x-grid-table”);
    List tableRows=editCustTable.findElements(按.tagName(“tr”));
    for(Iterator Iterator=tableRows.Iterator();Iterator.hasNext();){
    WebElement行=(WebElement)迭代器。下一步();
    //如果tr包含id='1010294'
    if(row.getAttribute(“id”)包含(“1010294”)){
    列表tds=行.findElements(按.tagName(“td”));
    获取(8)。单击();
    打破
    }       
    }
    
    OT测试ExtJS应用程序的最简单方法OT测试ExtJS应用程序的最简单方法