Попробуйте приведенный ниже xpath, чтобы подтвердить, можете ли вы найти все элементы или нет?Если страница загружена полностью, вы должны увидеть все совпадения (проверить вручную).
//div[@id='app']//div[contains(@class, 'tg-row')]
Вы можете извлечь и сохранить все элементы, используя метод driver.find_elements_by_xpath()
с помощью вышеуказанного локатора xpath, так чтоВы можете избегать повторения индекса элемента каждый раз.Попробуйте следующий код:
# Fetching and storing all the matches
elements = driver.find_elements_by_xpath("//div[@id='app']//div[contains(@class, 'tg-row')]");
for element in elements:
# printing the index numbers to confirm it has fetched or not?
print(element.get_attribute('index'))
Попробуйте дать некоторую задержку перед извлечением, если элемент присутствует, и если вы получаете NoSuchElementException
или проверьте на frame/iframe
.
Если все элементыне видны, вам нужно выполнить некоторые операции прокрутки.
Если вышеупомянутый метод не работает, вы можете попробовать приведенные ниже xpath-ы, чтобы определить этот элемент на основе индекса / совпадения номеров индекса, и вы можете продолжитьс вашим подходом.
(// div [@ id = 'app'] // div [содержит (@class, 'tg-row')]) [соответствующий индекс]
или
// div [@ id = 'app'] // div [содержит (@class, 'tg-row') и @ index = 'укажите здесь порядковый номер']
или
// div [содержит (@class,' tg-row ') и @ index =' укажите здесь индексный номер ']
или
// div [@ index = 'укажите здесь индексный номер']
или
(// div [содержит (@class, 'tg-row')]) [укажите соответствующий порядковый номер здесь]
Надеюсь, это поможет...