Selenium не может нажать на radio button из- за befor, что делать?

Ссылка скопирована
1 ответ
<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> Радиокнопка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> Радиокнопка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, что бы более эффективно находить нужные элементы. Вот отличная статья на Хабре и по этому поводу

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Чтобы решить проблему с невозможностью нажатия на 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)

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()

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 = 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.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно