Я изучаю фреймворк роботов уже пару недель, и у меня следующая ситуация при создании робота с реальным корпусом:
У меня есть значение идентификатора компании, и с его помощью мне нужно найти кнопку с этой информацией, которая находится внутри аккордеона на веб-сайте, список кнопок аккордеона полностью переменный и может иметь один или несколько элементов.
для контекста часть сайта выглядит так:
<div class = "accordion ui fluid"><div class = "item" style = "background-color: white; margin: 1rem 0px; border-radius: 10px;"><div class = "title accordion-title"><i aria-hidden = "true" class = "dropdown icon"></i>Accordion 1</div><div class = "content" style = "padding: 1rem; background-color: rgb(238, 238, 238);"><div class = "persona-btns"><div><button class = "ui primary button">Accordion1 op1</button><button class = "ui primary button">Accordion1 op2</button></div></div></div></div><div class = "item" style = "background-color: white; margin: 1rem 0px; border-radius: 10px;"><div class = "active title accordion-title"><i aria-hidden = "true" class = "dropdown icon"></i>Accordion2</div><div class = "content active" style = "padding: 1rem; background-color: rgb(238, 238, 238);"><div><button class = "ui basic button" style = "padding: 0px; box-shadow: 0px 0px 0px 0px; margin: 0px; text-align: inherit;">*id number of a company* *variable text(name of a company)*</button></div></div></div></div>
я пробовал с
Click Button //button[.//text()=*id value*]
но в этом случае ничего не находит и просто приходит с ошибкой
и другой вариант — использовать ключевое слово Get WebElements с контейнером кнопок, в котором перечислены веб-элементы, но без прямого способа привести его в соответствие с текстовым значением:
[<selenium.webdriver.remote.webelement.WebElement (session = "3932a0dd61c3018f5ede7ca31ea475b1", element = "59b4ad4d-3410-4e95-b1e5-3d02e07d1894")>]
поэтому мне нужно найти способ заставить фреймворк идентифицировать элемент с текстом или в опции WebElements, чтобы получить текст html и получить данные, чтобы сделать его доступным для нажатия с помощью ключевого слова Click Button
Похоже, что id value
не является точно текстовым значением любого текстового узла внутри этой кнопки.
Итак, вместо этого //button[.//text()=*id value*]
попробуйте это выражение XPath
//button[contains(.,'*id value*')]
Таким образом, вся командная строка будет
Click Button //button[contains(.,'*id value*')]