t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как найти кнопку в таблице, если не знаешь ничего кроме текста в строке.

Теги: #<Tag:0x00007f9afca7f9b0> #<Tag:0x00007f9afca7f898> #<Tag:0x00007f9afca7f780>

Помогите, пожалуйста найти кнопку в таблице.
Таблица выглядит так:


Я создаю елемент в таблице, у него постоянно разное положение. Все что у меня есть это его название.После создания хотелось бы его удалить, а вот как именно найти его не пойму.

    list_elements = driver.find_elements_by_class_name('attribute-name')
    l = driver.find_element_by_class_name('attribute-name')
    for l in list_elements: 
         print l.text

Вот так мне выводит название всех строк в таблице, как из них получить только с определенным текстом внутри и его например xpath?

можно сделать так:
взять лист всех элементов до создания и после создания, выкинуть дубликаты и останется 1, на него и кликать

Использовать якорный XPath.
Согласно правой части скриншота у меня получается так:

.//tr/td[@class="attribute-name" and contains(text(), "test 1234")]/../td/div/a[@data-target="#confirm-delete"]
1 Симпатия

Спасибо! Получилось:blush:

Могу предложить воспользоваться HTMLElements и представить строки таблицы как какстомный элемент.
Искать все такие элементы на странице, потом найти элемент, у которого есть нужный тебе текст (метод найти текст реализуется в классе кастомного элемента), а потом воспользоваться методом клика на кнопку так-же реализованном в классе кастомного элемента.
Таким образом у тебя не будет трехэтажных xPath (хотя такое тоже реально сделать), будет гараздо легче работать с подобными элементами и не будет проблем если в нужном тебе тексте будут комбинации кавычек :slight_smile:

Подробности про такой подход тут

(//a[@title='Delete'])[8]

Читаем вопрос внимательно…

Читаем ответ внимательно … ))

1 Симпатия

былобы ещё конечно полезно узнать как именно получилось

driver.find_element_by_xpath('.//tr/td[@class="attribute-name" and contains(text(), "test 1234")]/../td/div/a[@data-target="#confirm-delete"]').click()
1 Симпатия