Я создавал инструмент, который играет в онлайн-игру с использованием python 2.7 и селена, и очень застрял на одном конкретном элементе, который мне нужно выбрать.
Пользовательский интерфейс выглядит следующим образом:
1 2 3
a d g
b e h
c f i
Цифры один, два и три представляют собой выпадающее меню, при нажатии на которое открываются буквы. Каждый вариант представляет другой результат. Проблема в том, что в начале каждой игры позиции цифр и букв рандомизируются. В коде селектор css каждой кнопки помечен, например, как «#action-1 > button:nth-child(1)», как в «первой кнопке», но «первая кнопка» будет отличаться в каждой игре.
Я безуспешно пытался выполнить поиск по тексту ссылки, xpath и CSS-селектору.
Если это помогает, нажатие «копировать внешний html» дает это:
<button class="ng-binding" ng-click="subBtn($event)" ng-class="{disabled : !state.chapterStart || state.btns.indexOf(btn.action) != -1}" ng-disabled="!state.chapterStart || state.btns.indexOf(btn.action) != -1">Wait and See What They Do</button>
Часть «Подождите и посмотрите, что они делают» - это то, что говорит кнопка, и то, как вы знаете, что нажимать, но я не могу найти элемент по этому.
Копирование xpath приводит к //*[@id="action-1"]/button, что снова не очень полезно, потому что сказать ему щелкнуть, что было бы просто сказать "нажмите кнопку, которая находится в первой позиции" , и каждый раз меняется. Я добавил команды long time.sleep() для тестирования, страница определенно загружается полностью, так что это не проблема.
В любом случае, я слишком долго пытался понять это, и это поставило меня в тупик. Я был бы очень признателен за любой вклад, который вы все можете дать. Благодарю вас!