Python Selenium WebDriverWait 不工作,driver.findElement 工作

Python Selenium WebDriverWait not working, driver.findElement working

我正在尝试使用 Selenium 启用 RadioButton。

我正在使用

获取按钮和文本字段以及所有这些东西
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()

它以某种方式工作得很好。 为什么?我不明白。所以这真的不是让它工作,而是了解原因。

"I'm trying to enable a RadioButton with 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')))