Selenium не может нажать на radio button из- за befor, что делать?
<div class="col-xs-4 col-md-4"> <label for="">Статус</label> <span>Радиокнопка1</span> <input checked="checked" class="k-radio k-radio" id="Status2" name="Status2" type="radio" value=""> <label class="k-radio-label" for="Status2"></label> ::befor <span>&nbsp;Радиокнопка2</span> <input class="k-radio k-radio" id="Status1" name="Status1" type="radio" value=""> <label class="k-radio-label" for="Status"></label> ::befor </div> |
<div class="col-xs-4 col-md-4"> <label for="">Статус</label> <span>Радиокнопка1</span> <input checked="checked" class="k-radio k-radio" id="Status2" name="Status2" type="radio" value=""> <label class="k-radio-label" for="Status2"></label> ::befor <span>&nbsp;Радиокнопка2</span> <input class="k-radio k-radio" id="Status1" name="Status1" type="radio" value=""> <label class="k-radio-label" for="Status"></label> ::befor </div>
Здесь две радио кнопки. Не могу нажать ни на одну. В дом дереве подсвечивается только befor(знаю что псевдоэлемент) когда навожу на радиокнопку.
Пробовала нажимать на элемент с тегом input и label. Драйвер не видит.
Что делать ума не приложу ...
Дополнительно:
Ответы:
В Selenium должна быть функция ожидания появления элемента. Вот отличная статья на Хабре по Selenium + Python для ожидания появления элемента. Так же можете использовать XPath, что бы более эффективно находить нужные элементы. Вот отличная статья на Хабре и по этому поводу
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Чтобы решить проблему с невозможностью нажатия на radio button из-за псевдоэлемента `:before`, можно воспользоваться следующим подходом.
1. Попробуйте использовать метод `execute_script` в Selenium, чтобы выполнить JavaScript код, который поможет обойти проблему с псевдоэлементом `:before`. Ниже приведен пример кода на языке Python с использованием Selenium:
radio_button = driver.find_element_by_xpath("//input[@type='radio']") driver.execute_script("arguments[0].click();", radio_button)
2. Если первый способ не сработал, можно попробовать изменить стили элемента с помощью JavaScript, чтобы псевдоэлемент `:before` не мешал нажатию на radio button. Пример кода:
radio_button = driver.find_element_by_xpath("//input[@type='radio']") driver.execute_script("arguments[0].style['::before'] = 'none';", radio_button) radio_button.click()
3. Если и это не помогло, можно попробовать сделать элемент видимым с помощью CSS. Пример кода:
radio_button = driver.find_element_by_xpath("//input[@type='radio']") driver.execute_script("arguments[0].style.visibility = 'visible';", radio_button) radio_button.click()
Надеюсь, один из этих способов поможет вам решить проблему с нажатием на radio button из-за псевдоэлемента `:before` в Selenium.