Невозможно найти элемент в селене Python в iframe - PullRequest
0 голосов
/ 02 марта 2020

Ниже мой HTML код. Я попытался с помощью xpath и до сих пор получаю исключение из-за невозможности найти элемент в форме создания учетной записи. HTML code

1 Ответ

0 голосов
/ 02 марта 2020

Поскольку требуемый элемент находится в пределах <iframe>, поэтому для вызова click() на элементе необходимо:

  • Ввести WebDriverWait для требуемого frame_to_be_available_and_switch_to_it() .
  • Индуцируйте WebDriverWait для требуемого element_to_be_clickable().
  • Вы можете использовать любой из следующих Стратегий локатора :

    • Использование CSS_SELECTOR:

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#accountFrame[src='/account/frame/login/create']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[placeholder='Email'][data-test='create-account-email']"))).click()
      
    • Использование XPATH:

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='accountFrame' and @src='/account/frame/login/create']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='Email' and @data-test='create-account-email']"))).click()
      
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

Ссылка

Вы можете найти пара соответствующих обсуждений в:

...