Нажмите на Материал Сортируемый Заголовок с Селеном - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь выполнить некоторые автоматические тесты с использованием селена в приложении Angular. Один тест включает нажатие на заголовок сортировки матов. Мне не удалось найти способ щелкнуть заголовок с помощью селена.

Таблица будет сортироваться правильно, когда я щелкаю по ней, но я не могу отсортировать таблицу с помощью Selenium.

<table mat-table [dataSource]="dataSource" matSort>
  <ng-container matColumnDef="Header">
    <th mat-header-cell *matHeaderCellDef mat-sort-header="Header">Header</th>
    <td mat-cell *matCellDef="let row">{{row.title}}</td>
  </ng-container>
  <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
  <tr mat-row *matRowDef="let row; columns: displayedColumns"</tr>
</table>

Мой первоначальный подход, который не сработал.

sort_header = driver.find_element_by_xpath("//th[contains(@aria-label, 'Change Sorting for Header')]")
sort_header.click()

Мой второй подход, который также не сработал.

js = "document.querySelector('[aria-label="Change Sorting for Header"]').click();"
driver.execute_script(js)

ПервыйПодход дает ошибку «Сообщение: элемент не взаимодействует». Я могу консоль войти в правильную кнопку во втором подходе (который печатает элемент кнопки на консоли), изменив код JS. Тем не менее, элемент не сортируется при выполнении JavaScript.

1 Ответ

0 голосов
/ 13 октября 2019

Использование:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

sort_header = WebDriverWait(driver, 30).until(
EC.element_to_be_clickable((By.XPATH, "//button[normalize-space()='Header']"))) 

sort_header.click() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...