Python Selenium WebDriver, не работает, driver.findElement работает - PullRequest
1 голос
/ 06 апреля 2020

Я пытаюсь включить RadioButton с Selenium.

Я получаю кнопки, текстовые поля и все такое с

driver = webdriver.Chrome(executable_path='/usr..'
wait = WebDriverWait(driver, 10)

, но теперь, когда дело доходит до радио-кнопки внезапно происходит сбой:

Traceback (most recent call last):
  File "/home/jan/PycharmProjects/MailCreation/mail_creation", line 53, in <module>
    creator.create(1)
  File "/home/jan/PycharmProjects/MailCreation/mail_creation", line 43, in create
    wait.until(EC.element_to_be_clickable((By.ID, 'id-signup-radio-email'))).click()
  File "/home/jan/PycharmProjects/MailCreation/venv/lib/python3.6/site-packages/selenium/webdriver/support/wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:

Сначала я подумал, что, возможно, это из-за iframe, но я не могу его найти.

Я пробовал несколько раз с id, css -selector и xpath с этой строкой кода:

wait.until(EC.element_to_be_clickable((By.ID, 'id-signup-radio-email'))).click()

каждый раз происходит сбой. затем я попытался

time.sleep(3)
test = driver.find_element_by_id('id-signup-radio-email')
test.click()

, и это как-то прекрасно работает. ПОЧЕМУ? Я не понимаю Так что дело не в том, чтобы заставить его работать, а в том, чтобы понять, почему.

1 Ответ

2 голосов
/ 06 апреля 2020

«Я пытаюсь включить RadioButton с Selenium.»

Отключенные элементы не активируются. Попробуйте EC.presence_of_element_located вместо EC.element_to_be_clickable.

Так в основном:

target element = wait.until(EC.presence_of_element_located((By.ID, 'id-signup-radio-email')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...