Значение атрибута id , т. Е. ext-gen1076 содержит число и явно генерируется динамически. Префикс значения атрибута id , т.е. ext-gen , указывает, что id был создан во время выполнения с использованием Ext JS.
Ext JS
Ext JS - это JavaScript инфраструктура для создания ресурсоемких, кросс-платформенных веб-и мобильных приложений для любых современное устройство.
Этот сценарий использования
Возможно, вы определили элемент <table>
еще до того, как JavaScript отобразили полное дерево DOM . Следовательно, атрибут id отсутствовал.
Идентификация Ext JS элементов
При изменении значения атрибута id , т.е. В природе c вы не сможете использовать полное значение атрибута id и можете использовать только частичное значение, равное stati c. В соответствии с HTML вы указали:
<table id='ext-gen1076' class='bats-table bats-table--center'>
[...]
</table>
Чтобы идентифицировать узел <<code>table>, вам нужно вызвать WebDriverWait для visibility_of_element_located()
, и вы можете использовать любой из следующие Стратегии локатора :
Использование CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "table[id^='ext-gen']")))
Использование XPATH
:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//table[starts-with(@id,'ext-gen')]")))
Примечание : необходимо добавить следующие операции импорта:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Однако будет множество других элементов с атрибутом id , начинающимся с ext-gen
. Таким образом, чтобы уникально идентифицировать элемент <table>
, вам необходимо объединить атрибут class следующим образом:
Использование CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "table.bats-table.bats-table--center[id^='ext-gen']")))
Использование XPATH
:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//table[@class='bats-table bats-table--center' and starts-with(@id,'ext-gen')]")))
Ссылка
Соответствующее подробное обсуждение можно найти в: