Получить данные из строки сетки ExtJS, используя селен

1

В настоящее время существует пара ссылок, которые предполагают, что они помогут в решении этой задачи: общие (1) и конкретные (2).

Однако (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 и selenium webdriver?


UPD

После некоторого поиска обнаружено несколько деталей:

  1. Похоже, что browser.find_element(By.ID, 'element-id') просто не будет работать на веб-странице ExtJS, как только document.getElementById('element-id') равен null (исправьте меня, если это не так)
  2. Правильный способ получения Ext.getBody('body-element-id') страницы - Ext.getBody('body-element-id')

Однако нет такого метода для Select в selenium.webdriver.support.ui, который позволит получить доступ к элементам тела.

Таким образом, проблема еще не решена.

Теги:
python-3.x
extjs
selenium-webdriver

1 ответ

0

Может быть, этот образец Java-кода может вам помочь. Он напрямую не отвечает на ваш вопрос, но вы можете легко преобразовать его в python, а также получить представление о решении вашей проблемы.

Этот код получает сетку extjs со страницы, выполняет итерацию через свои строки, чтобы проверить, есть ли какая-либо ячейка, содержащая идентификатор примера (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;
        }       
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню